Skip to content

Commit

Permalink
work on making linux build work
Browse files Browse the repository at this point in the history
  • Loading branch information
WinteryFox committed Nov 4, 2023
1 parent 501f261 commit 8fc297b
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 75 deletions.
12 changes: 2 additions & 10 deletions .idea/QtSettings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 7 additions & 11 deletions engine/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,20 @@ pkg_check_modules(GLFW REQUIRED IMPORTED_TARGET glfw3)
pkg_check_modules(ASSIMP REQUIRED IMPORTED_TARGET assimp)
pkg_check_modules(SPDLOG REQUIRED IMPORTED_TARGET spdlog)

find_path(FreeImage_INCLUDE_DIR FreeImage.h HINTS ${FreeImage_ROOT})
find_library(FreeImage_LIBRARY NAMES FreeImage HINTS ${FreeImage_ROOT})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(FreeImage DEFAULT_MSG FreeImage_INCLUDE_DIR FreeImage_LIBRARY)

set(HEADERS Window.h ShaderModule.h ShaderProgram.h Monitor.h Buffer.h Mesh.h Util.h Renderer.h Vixen.h Framebuffer.h RenderPass.h Material.h Entity.h
Camera.h)
set(SOURCES Window.cpp Buffer.cpp Blending.h
Camera.cpp)
set(
SOURCES
Window.cpp
Buffer.cpp
Camera.cpp
)

link_libraries(
PkgConfig::GLM
PkgConfig::GLFW
PkgConfig::ASSIMP
PkgConfig::SPDLOG
FreeImage
)
add_library(Vixen SHARED ${SOURCES} ${HEADERS})
add_library(Vixen SHARED ${SOURCES})

if (ENABLE_VULKAN)
add_subdirectory(vk)
Expand Down
46 changes: 29 additions & 17 deletions engine/vk/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
project("Vixen Engine Vk")

find_package(Vulkan 1.3 REQUIRED)
find_package(spirv_cross_core CONFIG REQUIRED)
find_package(spirv_cross_glsl CONFIG REQUIRED)
find_package(spirv_cross_reflect CONFIG REQUIRED)
find_package(spirv_cross_cpp CONFIG REQUIRED)
find_package(glslang CONFIG REQUIRED)
#pkg_check_modules(glslang REQUIRED IMPORTED_TARGET glslang)

find_package(spirv_cross_reflect REQUIRED)

FetchContent_Declare(
vma
Expand Down Expand Up @@ -65,17 +61,6 @@ target_link_libraries(
Vulkan::Headers
volk
GPUOpen::VulkanMemoryAllocator
# glslang::OSDependent
glslang::glslang
# glslang::MachineIndependent
# glslang::GenericCodeGen
# glslang::OGLCompiler
# glslang::glslangValidator
# glslang::spirv-remap
glslang::glslang-default-resource-limits
# glslang::SPVRemapper
glslang::SPIRV
# glslang::HLSL
spirv-cross-core
spirv-cross-glsl
spirv-cross-reflect
Expand All @@ -84,6 +69,33 @@ target_link_libraries(

target_compile_definitions(VkVixen PUBLIC -DVK_NO_PROTOTYPES)

find_package(glslang QUIET)
if (${glslang_FOUND})
target_link_libraries(
VKVixen
PUBLIC
# glslang::OSDependent
glslang::glslang
# glslang::MachineIndependent
# glslang::GenericCodeGen
# glslang::OGLCompiler
# glslang::glslangValidator
# glslang::spirv-remap
glslang::glslang-default-resource-limits
# glslang::SPVRemapper
glslang::SPIRV
# glslang::HLSL
)
else ()
pkg_check_modules(glslang REQUIRED IMPORTED_TARGET glslang)
target_link_libraries(
VkVixen
PUBLIC
PkgConfig::glslang
PkgConfig::SPIRV
)
endif ()

if (ENABLE_TESTS)
add_executable(vktest test/main.cpp)
target_link_libraries(vktest PUBLIC Vixen VkVixen)
Expand Down
8 changes: 4 additions & 4 deletions engine/vk/Instance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ namespace Vixen::Vk {
appInfo.apiVersion = VK_API_VERSION_1_3;

std::vector<const char *> extensions(requiredExtensions);
extensions.emplace_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);
// extensions.emplace_back(VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME);

std::vector<const char *> layers{};
#ifdef DEBUG
Expand All @@ -36,7 +36,7 @@ namespace Vixen::Vk {
instanceInfo.ppEnabledExtensionNames = extensions.data();
instanceInfo.enabledLayerCount = layers.size();
instanceInfo.ppEnabledLayerNames = layers.data();
instanceInfo.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;
// instanceInfo.flags |= VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR;

spdlog::info(
"Creating new Vulkan instance for app \"{} ({})\" with extensions [{}] and layers [{}]",
Expand All @@ -61,8 +61,8 @@ namespace Vixen::Vk {
VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT;
debugInfo.messageType = VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT |
VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT;
VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT;
// VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT;
debugInfo.pfnUserCallback = vkDebugCallback;

vkCreateDebugUtilsMessengerEXT(instance, &debugInfo, nullptr, &debugMessenger);
Expand Down
55 changes: 25 additions & 30 deletions engine/vk/VkShaderModule.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@
#endif

#include <glslang/Public/ShaderLang.h>
#include <glslang/Public/ResourceLimits.h>
#include <glslang/Include/ResourceLimits.h>
#include <glslang/SPIRV/GlslangToSpv.h>
#include <spirv_reflect.hpp>
#include <spdlog/spdlog.h>
#include <spdlog/fmt/bin_to_hex.h>
#include <fstream>
#include <sstream>
#include "../ShaderModule.h"
#include "Vulkan.h"
#include "Device.h"
Expand Down Expand Up @@ -123,12 +124,6 @@ namespace Vixen::Vk {
case glslang::EbtRayQuery:
size = 0;
break;
case glslang::EbtHitObjectNV:
size = 0;
break;
case glslang::EbtCoopmat:
size = 0;
break;
case glslang::EbtSpirvType:
size = 0;
break;
Expand All @@ -138,6 +133,9 @@ namespace Vixen::Vk {
case glslang::EbtNumTypes:
size = 0;
break;
default:
size = 0;
break;
}

if (type->isVector())
Expand Down Expand Up @@ -195,9 +193,6 @@ namespace Vixen::Vk {
shader.setEnvInput(glslang::EShSourceGlsl, s, glslang::EShClientVulkan, VIXEN_VK_SPIRV_VERSION);
shader.setEnvClient(glslang::EShClientVulkan, glslang::EShTargetVulkan_1_3);
shader.setEnvTarget(glslang::EShTargetSpv, glslang::EShTargetSpv_1_6);
#ifdef DEBUG
shader.setDebugInfo(true);
#endif
shader.setAutoMapLocations(true);

shader.setEntryPoint(entrypoint.c_str());
Expand All @@ -206,29 +201,30 @@ namespace Vixen::Vk {
auto messages = (EShMessages) (EShMsgSpvRules | EShMsgVulkanRules);
glslang::TShader::ForbidIncluder includer;

if (!shader.parse(GetDefaultResources(), VIXEN_VK_SPIRV_VERSION, false, messages))
const auto &limits = TBuiltInResource();
if (!shader.parse(&limits, VIXEN_VK_SPIRV_VERSION, false, messages))
error("Failed to parse shader; {}", shader.getInfoLog());

program.addShader(&shader);
if (!program.link(messages))
error("Failed to link shader program; {}", shader.getInfoLog());

glslang::SpvOptions options{
glslang::SpvOptions options;

#ifdef DEBUG
.generateDebugInfo = true,
.stripDebugInfo = false,
.disableOptimizer = true,
.optimizeSize = false,
.disassemble = true,
options.generateDebugInfo = true;
options.stripDebugInfo = false;
options.disableOptimizer = true;
options.optimizeSize = false;
options.disassemble = true;
#else
.generateDebugInfo = false,
.stripDebugInfo = true,
.disableOptimizer = false,
.optimizeSize = true,
.disassemble = false,
options.generateDebugInfo = false;
options.stripDebugInfo = true;
options.disableOptimizer = false;
options.optimizeSize = true;
options.disassemble = false;
#endif
.validate = true,
};
options.validate = true;

spv::SpvBuildLogger logger;
glslang::GlslangToSpv(*program.getIntermediate(s), binary, &logger, &options);
Expand All @@ -248,13 +244,12 @@ namespace Vixen::Vk {
uint32_t location = c.get_decoration(uniformBuffer.id, spv::DecorationLocation);



uniformBuffers.push_back({
.binding = binding,
.location = location,
.size = 0,
.offset = 0,
});
.binding = binding,
.location = location,
.size = 0,
.offset = 0,
});
}

if (!logger.getAllMessages().empty())
Expand Down
1 change: 0 additions & 1 deletion engine/vk/VkShaderProgram.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
#include <glslang/SPIRV/SpvTools.h>
#include <glslang/SPIRV/GlslangToSpv.h>
#include <glslang/SPIRV/disassemble.h>
#include <glslang/Public/ResourceLimits.h>
#include <spdlog/fmt/bin_to_hex.h>
#include "../ShaderProgram.h"
#include "VkShaderModule.h"
Expand Down
4 changes: 2 additions & 2 deletions engine/vk/test/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ int main() {

auto buffer = Vixen::Vk::VkBuffer::stage(
vixen.device,
Vixen::Vk::Buffer::Usage::VERTEX |
Vixen::Vk::Buffer::Usage::INDEX,
Vixen::Buffer::Usage::VERTEX |
Vixen::Buffer::Usage::INDEX,
vertices.size() * sizeof(Vertex) +
indices.size() * sizeof(uint32_t),
[&vertices, &indices](auto data) {
Expand Down

0 comments on commit 8fc297b

Please sign in to comment.