Files
funnygame/materialsystem/vulkan/vulkan_state.h
2025-08-21 20:51:27 +03:00

58 lines
1.2 KiB
C++

#ifndef VULKAN_STATE_H
#define VULKAN_STATE_H
#include "volk.h"
#include "vk_mem_alloc.h"
#include "tier0/platform.h"
#include "iappsystem.h"
#include "materialsystem/materialsystem.h"
#define REQUIRED_EXTENSION(ext) bool bIsSupported_##ext;
#define OPTIONAL_EXTENSION(ext) bool bIsSupported_##ext;
extern struct SupportedVulkanExtensions_t
{
#include "device_extensions.h"
} g_vkAvailableExtensions;
#undef REQUIRED_EXTENSION
#undef OPTIONAL_EXTENSION
enum EDependencyMode
{
DEPENDENCY_MODE_SHADER_IMAGE,
DEPENDENCY_MODE_SHADER_BUFFER,
DEPENDENCY_MODE_SHADER_ACCELERATION_STRUCTURE,
DEPENDENCY_MODE_DRAWCALL_VERTEX_BUFFER,
DEPENDENCY_MODE_DRAWCALL_INDEX_BUFFER,
DEPENDENCY_MODE_DRAWCALL_OUTPUT_IMAGE,
};
abstract_class IVkCommand
{
public:
virtual void Call() = 0;
void AddDependency( IRenderingObject *pObject, EDependencyMode eDependencyMode );
};
abstract_class IVkCommandBuffer: public IAppSystem
{
public:
void PushCommand( IVkCommand *pCommand );
void Submit();
};
extern IVkCommandBuffer *vkcommandbuffer;
#undef __cplusplus
#include "vulkan/vk_enum_string_helper.h"
#define __cplusplus
#define VULKAN_RESULT_PRINT(r, func) \
if (r != VK_SUCCESS) \
Plat_FatalErrorFunc(#func " failed: %s\n", string_VkResult(r))
#endif