Commit Graph

37 Commits

Author SHA1 Message Date
4c6712e2fe Redefine ID types to be actual pointers
Redefined various ID types to be aliases of pointers instead of casting
a uintptr_t to the needed pointer.

e.g. SurfaceID = Surface*
2025-04-16 23:46:00 +10:00
859547570b Rename local parameter variables to use p_ prefix 2025-04-13 10:04:53 +10:00
8efa200e9e Add _check_device_capabilities stub function 2025-04-12 20:39:16 +10:00
930bba636e Check surface support when choosing device 2025-04-12 20:27:30 +10:00
6cbf8df17a Add get_api() and get_api_name() to WindowDriver 2025-04-12 10:32:30 +10:00
1849593dfc Detect window resize events and update editor main 2025-04-12 10:11:48 +10:00
6e1393ce64 Add basic surface handling to RenderDriver and WindowDriver
This will likely require significant rework but it will do for now. A
considerations worth thinking about:

- What happends when the WindowDriver destroys a window, what happens to
  the corresponding surface?
2025-04-10 17:53:48 +10:00
536a1e8773 Misc fixes 2025-04-08 22:10:07 +10:00
6055ae1ebc Add WindowDriver::beep function 2025-04-08 18:55:27 +10:00
9ab1b306b3 Rename RenderDriver::create_device to RenderDriver::select_device 2025-04-08 18:43:06 +10:00
608af1b866 Moved RenderDriver/WindorDriver init code to static create functions 2025-04-08 18:24:33 +10:00
286dd0fb0e Add basic Window creation to X11WindowDriver 2025-04-05 07:07:54 +10:00
5e7c94ba8f Rename SystemDriver to WindowDriver and removed LinuxSystemDriver
Hopefully the last time I change my mind on what I want these to be
called. Reason behind this change is to minimize scope of a single
module. The WindowDriver should really only handle stuff related to
windows. If we need OS level functionality (e.g. get_os_name), that
should be the responsibility of the OS driver (or whatever that ends
being called). Remember, composition over inheritance.
2025-04-03 04:47:22 +10:00
595f8a26de Add get_surface_extension to WaylandSystemDriver 2025-03-31 22:35:58 +10:00
6a77722ff5 Use preprocessor to exclude platform specify code instead of cmake 2025-03-31 22:17:35 +10:00
e76927f847 Add get_surface_extension to WindowsSystemDriver 2025-03-28 23:40:09 +10:00
34291215f1 Update .clang-format fixing include order 2025-03-28 23:10:10 +10:00
a6962bfba8 Add get_surface_extension to X11SystenDriver 2025-03-28 22:30:03 +10:00
d64b283319 Add DX12RenderDriver class stub 2025-03-28 18:51:46 +10:00
40cfa9901e Conditionally compile different drivers 2025-03-28 18:36:37 +10:00
211eb9a1d6 Add LinuxSystemDriver and WaylandSystemDriver classes 2025-03-28 14:57:38 +10:00
f727261a84 Rename Renderer::create to Renderer::init
All functions that the create/destroy a global static singleton should
use the names init and shutdown, while any static functions that
return/take a new object should use the names create and destroy.

e.g.
void Renderer::init() and void Renderer::shutdown()
Window* Window::create() and void Window::destroy(Window* window)
2025-03-28 13:46:59 +10:00
8eb5a39c4c Add System, SystemDriver, Win32SystemDriver and X11SystemDriver classes 2025-03-28 13:36:24 +10:00
773a08799b Add various size_t to u32 casts for MSVC 2025-03-27 15:13:03 +10:00
4e47c97539 Move VulkanRenderDriver::_pick_device to RenderDevice::choose_device 2025-03-27 15:07:24 +10:00
e1392f6f8e Add RenderDevice::AUTO for create_device() 2025-03-19 21:57:32 +10:00
f968d0cb22 Add get_api_name() and get_api_version_string() 2025-03-19 20:11:44 +10:00
76b0e87f28 Add various assertions throughout renderer 2025-03-16 12:58:15 +10:00
ee2637cd36 Add RenderDriver::create_device() 2025-03-16 00:15:24 +10:00
f979b782cc Add RenderDevice struct and driver accessor functions 2025-03-15 18:01:57 +10:00
d91275c393 Create VkInstance in VulkanRenderDriver 2025-03-15 15:17:42 +10:00
a8f8555612 Add NOVA_FUNC_NAME macro 2025-03-14 20:41:03 +10:00
69a5605a6f Switch to new logging system 2025-03-13 16:50:54 +10:00
c3e91e48a8 Add spdlog dependency and Debug class 2025-03-13 01:13:42 +10:00
8a635cc15f Simplify static Renderer class implementation 2025-03-07 22:12:01 +10:00
3009a4c6d9 Add basic Renderer and RenderDriver classes 2025-02-12 00:59:35 +10:00
f6bcee45bb Add basic project setup with engine and editor subdirectories 2025-02-04 10:28:49 +10:00