From cc526e1d895bb4b104d95bd0c574640b2661a5c9 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Mon, 3 Oct 2022 22:49:19 -0400 Subject: [PATCH] Add dummy Vulkan backend --- Makefile | 3 +- src/pc/gfx/gfx_vulkan.cpp | 110 ++++++++++++++++++++++++++++++++++++++ src/pc/gfx/gfx_vulkan.h | 12 +++++ src/pc/pc_main.c | 1 + 4 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 src/pc/gfx/gfx_vulkan.cpp create mode 100644 src/pc/gfx/gfx_vulkan.h diff --git a/Makefile b/Makefile index d620f92..8e80b58 100644 --- a/Makefile +++ b/Makefile @@ -490,7 +490,8 @@ PLATFORM_CFLAGS += -DNO_SEGMENTED_MEMORY -DUSE_SYSTEM_MALLOC # Compiler and linker flags for graphics backend ifeq ($(ENABLE_OPENGL),1) - GFX_CFLAGS := -DENABLE_OPENGL + # TODO: right now the opengl and vulkan backends are linked, will seperate later... + GFX_CFLAGS := -DENABLE_OPENGL -DENABLE_VULKAN GFX_LDFLAGS := ifeq ($(TARGET_WINDOWS),1) GFX_CFLAGS += $(shell sdl2-config --cflags) -DGLEW_STATIC diff --git a/src/pc/gfx/gfx_vulkan.cpp b/src/pc/gfx/gfx_vulkan.cpp new file mode 100644 index 0000000..b44b8f8 --- /dev/null +++ b/src/pc/gfx/gfx_vulkan.cpp @@ -0,0 +1,110 @@ +#ifdef ENABLE_VULKAN + +#include +#include + +#include "gfx_rendering_api.h" + +static bool gfx_vulkan_renderer_z_is_from_0_to_1(void) { + return false; +} + +static void gfx_vulkan_renderer_unload_shader(struct ShaderProgram *old_prg) { +} + +static void gfx_vulkan_renderer_load_shader(struct ShaderProgram *new_prg) { +} + +static struct ShaderProgram *gfx_vulkan_renderer_create_and_load_new_shader(uint32_t shader_id) { + return NULL; +} + +static struct ShaderProgram *gfx_vulkan_renderer_lookup_shader(uint32_t shader_id) { + return NULL; +} + +static void gfx_vulkan_renderer_shader_get_info(struct ShaderProgram *prg, uint8_t *num_inputs, bool used_textures[2]) { + *num_inputs = 0; + used_textures[0] = false; + used_textures[1] = false; +} + +static uint32_t gfx_vulkan_renderer_new_texture(void) { + return 0; +} + +static void gfx_vulkan_renderer_select_texture(int tile, uint32_t texture_id) { +} + +static void gfx_vulkan_renderer_upload_texture(const uint8_t *rgba32_buf, int width, int height) { +} + +static void gfx_vulkan_renderer_set_sampler_parameters(int tile, bool linear_filter, uint32_t cms, uint32_t cmt) { +} + +static void gfx_vulkan_renderer_set_depth_test(bool depth_test) { +} + +static void gfx_vulkan_renderer_set_depth_mask(bool z_upd) { +} + +static void gfx_vulkan_renderer_set_zmode_decal(bool zmode_decal) { +} + +static void gfx_vulkan_renderer_set_viewport(int x, int y, int width, int height) { +} + +static void gfx_vulkan_renderer_set_scissor(int x, int y, int width, int height) { +} + +static void gfx_vulkan_renderer_set_use_alpha(bool use_alpha) { +} + +static void gfx_vulkan_renderer_draw_triangles(float buf_vbo[], size_t buf_vbo_len, size_t buf_vbo_num_tris) { +} + +static void gfx_vulkan_renderer_init(void) { +} + +static void gfx_vulkan_renderer_on_resize(void) { +} + +static void gfx_vulkan_renderer_start_frame(void) { +} + +static void gfx_vulkan_renderer_end_frame(void) { +} + +static void gfx_vulkan_renderer_finish_render(void) { +} + +static const char* gfx_vulkan_get_name() { + return "Vulkan"; +} + +struct GfxRenderingAPI gfx_vulkan_api = { + gfx_vulkan_renderer_z_is_from_0_to_1, + gfx_vulkan_renderer_unload_shader, + gfx_vulkan_renderer_load_shader, + gfx_vulkan_renderer_create_and_load_new_shader, + gfx_vulkan_renderer_lookup_shader, + gfx_vulkan_renderer_shader_get_info, + gfx_vulkan_renderer_new_texture, + gfx_vulkan_renderer_select_texture, + gfx_vulkan_renderer_upload_texture, + gfx_vulkan_renderer_set_sampler_parameters, + gfx_vulkan_renderer_set_depth_test, + gfx_vulkan_renderer_set_depth_mask, + gfx_vulkan_renderer_set_zmode_decal, + gfx_vulkan_renderer_set_viewport, + gfx_vulkan_renderer_set_scissor, + gfx_vulkan_renderer_set_use_alpha, + gfx_vulkan_renderer_draw_triangles, + gfx_vulkan_renderer_init, + gfx_vulkan_renderer_on_resize, + gfx_vulkan_renderer_start_frame, + gfx_vulkan_renderer_end_frame, + gfx_vulkan_renderer_finish_render, + gfx_vulkan_get_name, +}; +#endif diff --git a/src/pc/gfx/gfx_vulkan.h b/src/pc/gfx/gfx_vulkan.h new file mode 100644 index 0000000..282f0d9 --- /dev/null +++ b/src/pc/gfx/gfx_vulkan.h @@ -0,0 +1,12 @@ +#ifdef ENABLE_VULKAN + +#ifndef GFX_VULKAN_H +#define GFX_VULKAN_H + +#include "gfx_rendering_api.h" + +extern struct GfxRenderingAPI gfx_vulkan_api; + +#endif + +#endif diff --git a/src/pc/pc_main.c b/src/pc/pc_main.c index 6fe3f6b..44a2310 100644 --- a/src/pc/pc_main.c +++ b/src/pc/pc_main.c @@ -18,6 +18,7 @@ #include "gfx/gfx_glx.h" #include "gfx/gfx_sdl.h" #include "gfx/gfx_dummy.h" +#include "gfx/gfx_vulkan.h" #include "audio/audio_api.h" #include "audio/audio_wasapi.h"