light/modules/renderer/private/backend/vk/messenger.hpp
light7734 16f3a80fd3
Some checks reported errors
continuous-integration/drone/push Build was killed
feat(renderer): separate things into backend/frontend + major vk backend refactors
2025-10-04 22:08:19 +03:30

57 lines
1.5 KiB
C++

#pragma once
#include <any>
#include <memory/pointer_types/null_on_move.hpp>
#include <renderer/backend/vk/context/instance.hpp>
#include <renderer/backend/vk/vulkan.hpp>
#include <renderer/components/messenger.hpp>
#include <renderer/frontend/messenger.hpp>
namespace lt::renderer::vk {
class Messenger: public IMessenger
{
public:
Messenger(IInstance *instance, ecs::Entity entity);
~Messenger() override;
Messenger(Messenger &&) = default;
Messenger(const Messenger &) = delete;
auto operator=(Messenger &&) -> Messenger & = default;
auto operator=(const Messenger &) const -> Messenger & = delete;
private:
static auto native_callback(
VkDebugUtilsMessageSeverityFlagBitsEXT severity,
VkDebugUtilsMessageTypeFlagsEXT type,
const VkDebugUtilsMessengerCallbackDataEXT *callback_data,
void *vulkan_user_data
) -> VkBool32;
[[nodiscard]] static auto to_native_severity(MessageSeverity severity)
-> VkDebugUtilsMessageSeverityFlagsEXT;
[[nodiscard]] static auto from_native_severity(VkDebugUtilsMessageSeverityFlagsEXT severity)
-> MessageSeverity;
[[nodiscard]] static auto to_native_type(MessageType type) -> VkDebugUtilsMessageTypeFlagsEXT;
[[nodiscard]] static auto from_native_type(VkDebugUtilsMessageTypeFlagsEXT type) -> MessageType;
memory::NullOnMove<class Instance *> m_instance {};
ecs::Entity m_entity;
VkDebugUtilsMessengerEXT m_debug_messenger = VK_NULL_HANDLE;
MessageSeverity m_severities {};
MessageType m_types {};
};
} // namespace lt::renderer::vk