Remove library-specific graphics api defines in favor of global PSEMEK_GRAPHICS_API_XXX

This commit is contained in:
Nikita Lisitsa 2024-08-02 20:39:52 +03:00
parent 0718282dda
commit a4d666096e
7 changed files with 16 additions and 17 deletions

View file

@ -59,6 +59,7 @@ if(PSEMEK_GRAPHICS_API STREQUAL WEBGPU)
endif() endif()
message(STATUS "Using graphics API ${PSEMEK_GRAPHICS_API}") message(STATUS "Using graphics API ${PSEMEK_GRAPHICS_API}")
list(APPEND PSEMEK_DEFINITIONS "-DPSEMEK_GRAPHICS_API_${PSEMEK_GRAPHICS_API}=1")
add_subdirectory(3rdparty) add_subdirectory(3rdparty)

View file

@ -9,7 +9,6 @@ endif()
psemek_add_library(psemek-app ${PSEMEK_APP_HEADERS} ${PSEMEK_APP_SOURCES}) psemek_add_library(psemek-app ${PSEMEK_APP_HEADERS} ${PSEMEK_APP_SOURCES})
target_include_directories(psemek-app PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") target_include_directories(psemek-app PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
target_link_libraries(psemek-app PUBLIC psemek-log psemek-util psemek-gfx psemek-ui) target_link_libraries(psemek-app PUBLIC psemek-log psemek-util psemek-gfx psemek-ui)
target_compile_definitions(psemek-app PUBLIC -DPSEMEK_APP_${PSEMEK_GRAPHICS_API}=1)
if(PSEMEK_GRAPHICS_API STREQUAL WEBGPU) if(PSEMEK_GRAPHICS_API STREQUAL WEBGPU)
target_link_libraries(psemek-app PUBLIC psemek-wgpu) target_link_libraries(psemek-app PUBLIC psemek-wgpu)
endif() endif()

View file

@ -2,7 +2,7 @@
#include <psemek/app/event_handler.hpp> #include <psemek/app/event_handler.hpp>
#if defined(PSEMEK_APP_WEBGPU) #if defined(PSEMEK_GRAPHICS_API_WEBGPU)
#include <psemek/wgpu/adapter.hpp> #include <psemek/wgpu/adapter.hpp>
#include <psemek/wgpu/surface.hpp> #include <psemek/wgpu/surface.hpp>
#include <psemek/wgpu/device.hpp> #include <psemek/wgpu/device.hpp>
@ -23,7 +23,7 @@ namespace psemek::app
std::string name; std::string name;
int multisampling = 4; int multisampling = 4;
bool highdpi = false; bool highdpi = false;
#if defined(PSEMEK_APP_WEBGPU) #if defined(PSEMEK_GRAPHICS_API_WEBGPU)
std::vector<wgpu::feature> required_features; std::vector<wgpu::feature> required_features;
std::optional<wgpu::limits> required_limits; std::optional<wgpu::limits> required_limits;
#endif #endif
@ -36,10 +36,10 @@ namespace psemek::app
std::function<void(bool)> show_cursor; std::function<void(bool)> show_cursor;
std::function<void(bool)> relative_mouse_mode; std::function<void(bool)> relative_mouse_mode;
std::function<void(bool)> windowed; std::function<void(bool)> windowed;
#if defined(PSEMEK_APP_OPENGL) #if defined(PSEMEK_GRAPHICS_API_OPENGL)
std::function<void(bool)> vsync; std::function<void(bool)> vsync;
#endif #endif
#if defined(PSEMEK_APP_WEBGPU) #if defined(PSEMEK_GRAPHICS_API_WEBGPU)
wgpu::adapter adapter; wgpu::adapter adapter;
wgpu::surface surface; wgpu::surface surface;
wgpu::device device; wgpu::device device;

View file

@ -11,4 +11,3 @@ if(PSEMEK_GRAPHICS_API STREQUAL OPENGL)
elseif(PSEMEK_GRAPHICS_API STREQUAL WEBGPU) elseif(PSEMEK_GRAPHICS_API STREQUAL WEBGPU)
target_link_libraries(psemek-sdl2 PUBLIC psemek-wgpu) target_link_libraries(psemek-sdl2 PUBLIC psemek-wgpu)
endif() endif()
target_compile_definitions(psemek-sdl2 PUBLIC "-DPSEMEK_SDL2_${PSEMEK_GRAPHICS_API}=1")

View file

@ -2,7 +2,7 @@
#include <psemek/app/application.hpp> #include <psemek/app/application.hpp>
#if defined(PSEMEK_SDL2_WEBGPU) #if defined(PSEMEK_GRAPHICS_API_WEBGPU)
#include <psemek/wgpu/surface.hpp> #include <psemek/wgpu/surface.hpp>
#include <psemek/wgpu/adapter.hpp> #include <psemek/wgpu/adapter.hpp>
#include <psemek/wgpu/device.hpp> #include <psemek/wgpu/device.hpp>
@ -27,7 +27,7 @@ namespace psemek::sdl2
void vsync(bool on); void vsync(bool on);
void windowed(bool on); void windowed(bool on);
#if defined(PSEMEK_SDL2_WEBGPU) #if defined(PSEMEK_GRAPHICS_API_WEBGPU)
wgpu::adapter wgpu_adapter() const { return wgpu_adapter_; } wgpu::adapter wgpu_adapter() const { return wgpu_adapter_; }
wgpu::surface wgpu_surface() const { return wgpu_surface_; } wgpu::surface wgpu_surface() const { return wgpu_surface_; }
wgpu::device wgpu_device() const { return wgpu_device_; } wgpu::device wgpu_device() const { return wgpu_device_; }
@ -37,9 +37,9 @@ namespace psemek::sdl2
std::shared_ptr<void> sdl_init_; std::shared_ptr<void> sdl_init_;
SDL_Window * window_ = nullptr; SDL_Window * window_ = nullptr;
#if defined(PSEMEK_SDL2_OPENGL) #if defined(PSEMEK_GRAPHICS_API_OPENGL)
SDL_GLContext gl_context_ = nullptr; SDL_GLContext gl_context_ = nullptr;
#elif defined(PSEMEK_SDL2_WEBGPU) #elif defined(PSEMEK_GRAPHICS_API_WEBGPU)
wgpu::adapter wgpu_adapter_; wgpu::adapter wgpu_adapter_;
wgpu::surface wgpu_surface_; wgpu::surface wgpu_surface_;
wgpu::device wgpu_device_; wgpu::device wgpu_device_;

View file

@ -49,11 +49,11 @@ int main(int argc, char ** argv) try
context.relative_mouse_mode = [&](bool mode){ window.relative_mouse_mode(mode); }; context.relative_mouse_mode = [&](bool mode){ window.relative_mouse_mode(mode); };
context.windowed = [&](bool on){ window.windowed(on); }; context.windowed = [&](bool on){ window.windowed(on); };
#if defined(PSEMEK_SDL2_OPENGL) #if defined(PSEMEK_GRAPHICS_API_OPENGL)
context.vsync = [&](bool on){ window.vsync(on); }; context.vsync = [&](bool on){ window.vsync(on); };
#endif #endif
#if defined(PSEMEK_SDL2_WEBGPU) #if defined(PSEMEK_GRAPHICS_API_WEBGPU)
context.adapter = window.wgpu_adapter(); context.adapter = window.wgpu_adapter();
context.surface = window.wgpu_surface(); context.surface = window.wgpu_surface();
context.device = window.wgpu_device(); context.device = window.wgpu_device();

View file

@ -3,10 +3,10 @@
#include <psemek/geom/box.hpp> #include <psemek/geom/box.hpp>
#include <psemek/log/log.hpp> #include <psemek/log/log.hpp>
#if defined(PSEMEK_SDL2_OPENGL) #if defined(PSEMEK_GRAPHICS_API_OPENGL)
#include <psemek/gfx/gl.hpp> #include <psemek/gfx/gl.hpp>
#include <psemek/gfx/init.hpp> #include <psemek/gfx/init.hpp>
#elif defined(PSEMEK_SDL2_WEBGPU) #elif defined(PSEMEK_GRAPHICS_API_WEBGPU)
#include <psemek/wgpu/instance.hpp> #include <psemek/wgpu/instance.hpp>
#include <psemek/wgpu/logging.hpp> #include <psemek/wgpu/logging.hpp>
#include <psemek/wgpu/version.hpp> #include <psemek/wgpu/version.hpp>
@ -23,7 +23,7 @@ namespace psemek::sdl2
std::uint32_t flags = SDL_WINDOW_HIDDEN | SDL_WINDOW_RESIZABLE; std::uint32_t flags = SDL_WINDOW_HIDDEN | SDL_WINDOW_RESIZABLE;
if (options.highdpi) flags |= SDL_WINDOW_ALLOW_HIGHDPI; if (options.highdpi) flags |= SDL_WINDOW_ALLOW_HIGHDPI;
#if defined(PSEMEK_SDL2_OPENGL) #if defined(PSEMEK_GRAPHICS_API_OPENGL)
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, gl::sys::major_version()); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, gl::sys::major_version());
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, gl::sys::minor_version()); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, gl::sys::minor_version());
@ -66,7 +66,7 @@ namespace psemek::sdl2
if (!window_) if (!window_)
sdl2::fail("Failed to create window: "); sdl2::fail("Failed to create window: ");
#if defined(PSEMEK_SDL2_OPENGL) #if defined(PSEMEK_GRAPHICS_API_OPENGL)
gl_context_ = SDL_GL_CreateContext(window_); gl_context_ = SDL_GL_CreateContext(window_);
if (!gl_context_) if (!gl_context_)
sdl2::fail("Failed to create OpenGL context: "); sdl2::fail("Failed to create OpenGL context: ");
@ -74,7 +74,7 @@ namespace psemek::sdl2
SDL_GL_MakeCurrent(window_, gl_context_); SDL_GL_MakeCurrent(window_, gl_context_);
gfx::init(); gfx::init();
#elif defined(PSEMEK_SDL2_WEBGPU) #elif defined(PSEMEK_GRAPHICS_API_WEBGPU)
wgpu::setup_logging(log::level::error); wgpu::setup_logging(log::level::error);
auto instance = wgpu::instance::create({}); auto instance = wgpu::instance::create({});