Skip to content

Commit

Permalink
Merge pull request #5 from wowvain-dev/platform-layer
Browse files Browse the repository at this point in the history
Added base implementation of the Linux platform layer. Modified a bit…
  • Loading branch information
wowvain-dev authored Mar 24, 2024
2 parents 86cb622 + 367c786 commit 88b7bef
Show file tree
Hide file tree
Showing 19 changed files with 643 additions and 125 deletions.
13 changes: 13 additions & 0 deletions Sandbox/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,19 @@

#include <iostream>
#include <entry.h>
#include <Core/Logger.h>
#include <Platform/Platform_Linux.h>

int main(int argc, char** argv) {
Vane::LinuxPlatform platform;
if (platform.startup("Vane Engine Sandbox", 100, 100, 1280, 720)) {
while (true) {
platform.consoleWrite("test\n", Vane::LOG_LEVEL::V_FATAL);
platform.pumpMessages();
}
}

platform.shutdown();

return 0;
}
4 changes: 2 additions & 2 deletions Vane/Core/Logger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

namespace Vane {
void reportAssertionFailure(const char* expression, const char* message, const char* file, i32 line) {
Logger::log_output(Logger::LOG_LEVEL_FATAL, "Assertion Failure: %s, message: '%s', in file: %s, line: %d\n",
Logger::log_output(LOG_LEVEL::V_FATAL, "Assertion Failure: %s, message: '%s', in file: %s, line: %d\n",
expression,
message,
file,
Expand All @@ -28,7 +28,7 @@ namespace Vane {
std::string file,
i32 line
) {
Logger::log_output(Logger::LOG_LEVEL_FATAL, "Assertion Failure: %s, message: '%s', in file: %s, line: %d\n",
Logger::log_output(LOG_LEVEL::V_FATAL, "Assertion Failure: %s, message: '%s', in file: %s, line: %d\n",
expression,
message,
file,
Expand Down
51 changes: 24 additions & 27 deletions Vane/Core/Logger.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,28 +19,25 @@
#define LOG_DEBUG_ENABLED 1
#define LOG_TRACE_ENABLED 1

#define RESET_COLOR "\x1B[0m"
#define INFO_COLOR "\x1B[1;34m"
#define DEBUG_COLOR "\x1B[1;30m"
#define WARNING_COLOR "\x1B[1;33m"
#define ERROR_COLOR "\x1B[31m"

#ifdef RELEASE
#define LOG_DEBUG_ENABLED 0
#define LOG_TRACE_ENABLED 0
#endif


namespace Vane {
enum LOG_LEVEL {
V_FATAL = 0,
V_ERROR = 1,
V_WARN = 2,
V_INFO = 3,
V_DEBUG = 4,
V_TRACE = 5
};

class VAPI Logger {
public:
enum LOG_LEVEL {
LOG_LEVEL_FATAL = 0,
LOG_LEVEL_ERROR = 1,
LOG_LEVEL_WARN = 2,
LOG_LEVEL_INFO = 3,
LOG_LEVEL_DEBUG = 4,
LOG_LEVEL_TRACE = 5
};

private:
public:
Expand All @@ -51,50 +48,50 @@ namespace Vane {
template<typename... Args>
static void log_output(LOG_LEVEL level, const char *message, Args... args) {
std::tuple<const char *, const char *> level_strings[6] = {
std::make_tuple("[FATAL]: ", ERROR_COLOR),
std::make_tuple("[ERROR]: ", ERROR_COLOR),
std::make_tuple("[WARN]: ", WARNING_COLOR),
std::make_tuple("[INFO]: ", INFO_COLOR),
std::make_tuple("[DEBUG]: ", DEBUG_COLOR),
std::make_tuple("[TRACE]: ", DEBUG_COLOR)
std::make_tuple("[FATAL]: ", "0;41"),
std::make_tuple("[ERROR]: ", "1;31"),
std::make_tuple("[WARN]: ", "1;33"),
std::make_tuple("[INFO]: ", "1;32"),
std::make_tuple("[DEBUG]: ", "1;34"),
std::make_tuple("[TRACE]: ", "1:30")
};
bool is_error = level < 2;
printf("%s%s - ",
printf("\033[%sm%s - ",
std::get<1>(level_strings[level]),
std::get<0>(level_strings[level]));
printf(message, args...);
printf("%s\n", RESET_COLOR);
printf("\033[0m\n");
}
};

#ifndef VFATAL
#define VFATAL(message, ...) Vane::Logger::log_output(Vane::Logger::LOG_LEVEL::LOG_LEVEL_FATAL, message, ##__VA_ARGS__);
#define VFATAL(message, ...) Vane::Logger::log_output(Vane::LOG_LEVEL::V_FATAL, message, ##__VA_ARGS__);
#endif

#ifndef VERROR
#define VERROR(message, ...) Vane::Logger::log_output(Vane::Logger::LOG_LEVEL::LOG_LEVEL_ERROR, message, ##__VA_ARGS__);
#define VERROR(message, ...) Vane::Logger::log_output(Vane::LOG_LEVEL::V_ERROR, message, ##__VA_ARGS__);
#endif

#if LOG_WARN_ENABLED == 1
#define VWARN(message, ...) Vane::Logger::log_output(Vane::Logger::LOG_LEVEL::LOG_LEVEL_WARN, message, ##__VA_ARGS__);
#define VWARN(message, ...) Vane::Logger::log_output(Vane::LOG_LEVEL::V_WARN, message, ##__VA_ARGS__);
#else
#define VWARN(message, ...)
#endif

#if LOG_INFO_ENABLED == 1
#define VINFO(message, ...) Vane::Logger::log_output(Vane::Logger::LOG_LEVEL::LOG_LEVEL_INFO, message, ##__VA_ARGS__);
#define VINFO(message, ...) Vane::Logger::log_output(Vane::LOG_LEVEL::V_INFO, message, ##__VA_ARGS__);
#else
#define VINFO(message, ...)
#endif

#if LOG_DEBUG_ENABLED == 1
#define VDEBUG(message, ...) Vane::Logger::log_output(Vane::Logger::LOG_LEVEL::LOG_LEVEL_DEBUG, message, ##__VA_ARGS__);
#define VDEBUG(message, ...) Vane::Logger::log_output(Vane::LOG_LEVEL::V_DEBUG, message, ##__VA_ARGS__);
#else
#define VDEBUG(message, ...)
#endif

#if LOG_TRACE_ENABLED == 1
#define VTRACE(message, ...) Vane::Logger::log_output(Vane::Logger::LOG_LEVEL::LOG_LEVEL_TRACE, message, ##__VA_ARGS__);
#define VTRACE(message, ...) Vane::Logger::log_output(Vane::LOG_LEVEL::V_TRACE, message, ##__VA_ARGS__);
#else
#define VTRACE(message, ...)
#endif
Expand Down
8 changes: 2 additions & 6 deletions Vane/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ ifeq ($(config),dbg)
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -m64 -fPIC -g
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -m64 -fPIC -g -std=c++20
ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)
LIBS += -Wl,-Bstatic -lSDL2 -lSDL2main -Wl,-Bdynamic -lvulkan -lfmt
LIBS += -Wl,-Bstatic -lSDL2 -lSDL2main -Wl,-Bdynamic -lvulkan -lfmt -lX11 -lxcb -lX11-xcb
LDDEPS +=
ALL_LDFLAGS += $(LDFLAGS) -L../vendor/x64-linux/lib -L../../../../vulkan/1.3.280.0/x86_64/lib -L/usr/lib64 -m64 -shared -Wl,-soname=libVane.so
LINKCMD = $(CXX) -o "$@" $(OBJECTS) $(RESOURCES) $(ALL_LDFLAGS) $(LIBS)
Expand All @@ -49,7 +49,7 @@ ifeq ($(config),rel)
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -m64 -O2 -fPIC
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -m64 -O2 -fPIC -std=c++20
ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)
LIBS += -Wl,-Bstatic -lSDL2 -lSDL2main -Wl,-Bdynamic -lvulkan -lfmt
LIBS += -Wl,-Bstatic -lSDL2 -lSDL2main -Wl,-Bdynamic -lvulkan -lfmt -lX11 -lxcb -lX11-xcb
LDDEPS +=
ALL_LDFLAGS += $(LDFLAGS) -L../vendor/x64-linux/lib -L../../../../vulkan/1.3.280.0/x86_64/lib -L/usr/lib64 -m64 -shared -Wl,-soname=libVane.so -s
LINKCMD = $(CXX) -o "$@" $(OBJECTS) $(RESOURCES) $(ALL_LDFLAGS) $(LIBS)
Expand All @@ -67,7 +67,6 @@ endif
OBJECTS := \
$(OBJDIR)/Logger.o \
$(OBJDIR)/Platform_Linux.o \
$(OBJDIR)/Platform_Win32.o \
$(OBJDIR)/entry.o \

RESOURCES := \
Expand Down Expand Up @@ -133,9 +132,6 @@ $(OBJDIR)/Logger.o: Core/Logger.cpp
$(OBJDIR)/Platform_Linux.o: Platform/Platform_Linux.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(ALL_CXXFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Platform_Win32.o: Platform/Platform_Win32.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(ALL_CXXFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/entry.o: entry.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(ALL_CXXFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
Expand Down
29 changes: 13 additions & 16 deletions Vane/Platform/Platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,22 @@ class Platform {
i32 y,
i32 width,
i32 height
);
) = 0;

virtual void shutdown();
virtual void shutdown() = 0;

virtual bool pumpMessages();
virtual bool pumpMessages() = 0;

virtual void* allocate(u64 size, bool aligned);
virtual void free();
virtual void* zeroMemory(void* block, u64 size);
virtual void* copyMemory(void* dest, const void* source, u64 size);
virtual void* setMemory(void* dest, i32 value, u64 size);

virtual void* consoleWrite(const char* message, u8 color);
virtual void* consoleWriteError(const char* message, u8 color);

virtual f64 getAbsoluteTime();

virtual void sleep();
virtual void* allocate(std::size_t size, bool aligned) = 0;
virtual void free(void*, std::size_t) = 0;
virtual void* zeroMemory(void* block, std::size_t size) = 0;
virtual void* copyMemory(void* dest, const void* source, std::size_t size) = 0;
virtual void* setMemory(void* dest, i32 value, std::size_t size) = 0;
virtual void consoleWrite(const char* message, u8 color) = 0;
virtual void consoleWriteError(const char* message, u8 color) = 0;
virtual f64 getAbsoluteTime() = 0;
virtual void sleep(u64) = 0;
};

}
};

Loading

0 comments on commit 88b7bef

Please sign in to comment.