starfield

starfield.git
git clone git://git.lenczewski.org/starfield.git
Log | Files | Refs | Submodules | README | LICENSE

win_starfield.h (1758B)


      1 #ifndef WIN_STARFIELD_H
      2 #define WIN_STARFIELD_H
      3 
      4 #include <stdio.h>
      5 
      6 #include <windows.h>
      7 
      8 #define VK_USE_PLATFORM_WAYLAND_WIN32
      9 #include <vulkan/vulkan.h>
     10 #include <vulkan/vulkan_win32.h>
     11 
     12 #include "starfield_api.h"
     13 #include "renderer.h"
     14 #include "utils.h"
     15 
     16 struct starfield_thread {
     17 	u32 id;
     18 };
     19 
     20 /* wasapi state */
     21 struct win_audio {
     22 	// TODO
     23 
     24 	struct starfield_audio_buffer buffer;
     25 
     26 	b32 enabled;
     27 };
     28 
     29 /* dwm state */
     30 struct win_video {
     31 	// TODO
     32 
     33 	u32 width, height;
     34 };
     35 
     36 /* vulkan state */
     37 struct win_vulkan {
     38 	VkInstance instance;
     39 	VkDebugUtilsMessengerEXT debug_messenger;
     40 	VkSurfaceKHR surface;
     41 
     42 	struct renderer *renderer;
     43 };
     44 
     45 struct win_starfield_state {
     46 	struct arena platform_arena;
     47 	struct arena renderer_arena;
     48 	struct arena starfield_arena;
     49 
     50 	struct win_audio audio;
     51 	struct win_video video;
     52 	struct win_vulkan vulkan;
     53 
     54 	struct platform_api platform_api;
     55 	struct renderer_api renderer_api;
     56 	struct starfield_api starfield_api;
     57 
     58 	b32 running;
     59 };
     60 
     61 internal b32
     62 load_starfield_api(char const *filename, struct starfield_api *api);
     63 
     64 internal struct platform_api
     65 load_platform_api(void);
     66 
     67 internal b32
     68 init_memory(struct arena *platform_arena, u64 platform_capacity,
     69 	    struct arena *renderer_arena, u64 renderer_capacity,
     70 	    struct arena *starfield_arena, u64 starfield_capacity);
     71 
     72 internal b32
     73 init_audio(struct arena *arena, struct win_audio *audio, u32 period_us, u32 buffered_periods);
     74 
     75 internal void
     76 play_audio(struct win_audio *audio);
     77 
     78 internal b32
     79 init_video(struct arena *arena, struct win_video *video, HINSTANCE instance);
     80 
     81 internal void
     82 draw_frame(struct win_video *video);
     83 
     84 internal b32
     85 init_vulkan(struct arena *arena, struct win_vulkan *vulkan);
     86 
     87 internal void
     88 free_vulkan(struct win_vulkan *vulkan);
     89 
     90 #endif /* WIN_STARFIELD_H */