rtengine/src/renderer/vk/init.c
Kevin Trogant 33e596c9d6
Some checks failed
Ubuntu Cross to Win64 / Cross Compile with ming64 (1.4.0, ubuntu-latest) (push) Failing after 1m45s
Ubuntu Cross to Win64 / Compile for linux (1.4.0, ubuntu-latest) (push) Successful in 1m28s
feat(vk): Basic command list submit workflow
2024-08-04 13:31:40 +02:00

72 lines
2.3 KiB
C

#include <renderer/backend_api.h>
#include <runtime/runtime.h>
#include <runtime/config.h>
#include "device.h"
extern rt_cvar r_VkEnableAPIAllocTracking;
extern rt_cvar r_VkPhysDeviceName;
extern rt_cvar r_VkMaxFramesInFlight;
extern rt_cvar r_VkMaxThreads;
extern rt_cvar r_VkPreferMailboxMode;
extern rt_cvar r_VkPreferRelaxedMode;
extern rt_cvar r_VkEnableVSync;
extern rt_cvar r_VkMaxResources;
extern rt_cvar r_VkBindlessUniformBufferDescriptors;
extern rt_cvar r_VkBindlessStorageBufferDescriptors;
extern rt_cvar r_VkBindlessSampledImageDescriptors;
extern rt_cvar r_VkBindlessStorageImageDescriptors;
extern rt_cvar r_VkBindlessSamplerDescriptors;
void VkRegisterCVARs(void) {
rtRegisterCVAR(&r_VkEnableAPIAllocTracking);
rtRegisterCVAR(&r_VkPhysDeviceName);
rtRegisterCVAR(&r_VkMaxFramesInFlight);
rtRegisterCVAR(&r_VkMaxThreads);
rtRegisterCVAR(&r_VkPreferMailboxMode);
rtRegisterCVAR(&r_VkPreferRelaxedMode);
rtRegisterCVAR(&r_VkEnableVSync);
rtRegisterCVAR(&r_VkMaxResources);
rtRegisterCVAR(&r_VkBindlessUniformBufferDescriptors);
rtRegisterCVAR(&r_VkBindlessStorageBufferDescriptors);
rtRegisterCVAR(&r_VkBindlessSampledImageDescriptors);
rtRegisterCVAR(&r_VkBindlessStorageImageDescriptors);
rtRegisterCVAR(&r_VkBindlessSamplerDescriptors);
}
static rt_vk_device _device;
rt_render_backend_init_result VkInit(const rt_renderer_window_info *info) {
rt_render_backend_init_result res = {.result = RT_SUCCESS};
rt_create_vk_device_result device_result = rtCreateVkDevice(info);
if (device_result.result != RT_SUCCESS) {
res.result = device_result.result;
return res;
}
/* Populate the device interface */
_device = device_result.device;
rt_render_device_i device_i = {
.o = &_device,
.GetPhysicalResourceManager = rtVkDevGetPhysicalResourceManager,
.SubmitCommandList = rtVkDevSubmitCommandList,
};
res.device = device_i;
return res;
}
void VkShutdown(void) {
rtDestroyVkDevice(&_device);
}
// Called by the application to retrieve the renderer api
RT_DLLEXPORT rt_render_backend_api rtLoadRenderBackendImpl(void) {
rt_render_backend_api api = {
.RegisterCVARs = VkRegisterCVARs,
.Init = VkInit,
.Shutdown = VkShutdown,
};
return api;
}