Add DX12RenderDriver class stub

This commit is contained in:
2025-03-28 18:51:46 +10:00
parent 40cfa9901e
commit d64b283319
5 changed files with 54 additions and 1 deletions

View File

@@ -3,6 +3,7 @@
include(FetchContent) include(FetchContent)
set(NOVA_DX12 ON CACHE BOOL "Enable DirectX 12 support")
set(NOVA_VULKAN ON CACHE BOOL "Enable Vulkan support") set(NOVA_VULKAN ON CACHE BOOL "Enable Vulkan support")
set(NOVA_WAYLAND ON CACHE BOOL "Enable Wayland support") set(NOVA_WAYLAND ON CACHE BOOL "Enable Wayland support")
set(NOVA_X11 ON CACHE BOOL "Enable X11 support") set(NOVA_X11 ON CACHE BOOL "Enable X11 support")
@@ -26,8 +27,15 @@ else ()
${ENGINE_SRC} ${ENGINE_SRC}
drivers/linux/system_driver.cpp drivers/linux/system_driver.cpp
) )
set(NOVA_DX12 OFF)
endif () endif ()
if (NOVA_DX12)
set(ENGINE_SRC
${ENGINE_SRC}
drivers/dx12/render_driver.cpp
)
endif ()
if (NOVA_VULKAN) if (NOVA_VULKAN)
find_package(Vulkan REQUIRED) find_package(Vulkan REQUIRED)
set(ENGINE_SRC set(ENGINE_SRC
@@ -83,6 +91,7 @@ set(ENGINE_LIBS_PUBLIC
spdlog::spdlog spdlog::spdlog
) )
set(ENGINE_DEFS set(ENGINE_DEFS
$<$<BOOL:${NOVA_DX12}>:NOVA_DX12>
$<$<BOOL:${NOVA_VULKAN}>:NOVA_VULKAN> $<$<BOOL:${NOVA_VULKAN}>:NOVA_VULKAN>
$<$<BOOL:${NOVA_WAYLAND}>:NOVA_WAYLAND> $<$<BOOL:${NOVA_WAYLAND}>:NOVA_WAYLAND>
$<$<BOOL:${NOVA_X11}>:NOVA_X11> $<$<BOOL:${NOVA_X11}>:NOVA_X11>

View File

@@ -7,5 +7,5 @@
#pragma once #pragma once
namespace Nova { namespace Nova {
enum class RenderAPI { VULKAN }; enum class RenderAPI { DX12, VULKAN };
} // namespace Nova } // namespace Nova

View File

@@ -0,0 +1,19 @@
/**
* Copyright (c) 2025, Jayden Grubb <contact@jaydengrubb.com>
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "drivers/dx12/render_driver.h"
#include <nova/core/debug.h>
using namespace Nova;
DX12RenderDriver::DX12RenderDriver() {
NOVA_AUTO_TRACE();
}
DX12RenderDriver::~DX12RenderDriver() {
NOVA_AUTO_TRACE();
}

View File

@@ -0,0 +1,17 @@
/**
* Copyright (c) 2025, Jayden Grubb <contact@jaydengrubb.com>
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#pragma once
#include <nova/render/render_driver.h>
namespace Nova {
class DX12RenderDriver final : public RenderDriver {
public:
DX12RenderDriver();
~DX12RenderDriver() override;
};
} // namespace Nova

View File

@@ -4,6 +4,9 @@
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
#ifdef NOVA_DX12
#include "drivers/dx12/render_driver.h"
#endif
#ifdef NOVA_VULKAN #ifdef NOVA_VULKAN
#include "drivers/vulkan/render_driver.h" #include "drivers/vulkan/render_driver.h"
#endif #endif
@@ -22,6 +25,11 @@ void Renderer::init(const RenderAPI api) {
NOVA_ASSERT(!s_driver); NOVA_ASSERT(!s_driver);
switch (api) { switch (api) {
#ifdef NOVA_DX12
case RenderAPI::DX12:
s_driver = std::make_unique<DX12RenderDriver>();
break;
#endif
#ifdef NOVA_VULKAN #ifdef NOVA_VULKAN
case RenderAPI::VULKAN: case RenderAPI::VULKAN:
s_driver = std::make_unique<VulkanRenderDriver>(); s_driver = std::make_unique<VulkanRenderDriver>();