something

This commit is contained in:
2025-12-14 15:54:21 +02:00
parent c4406d1891
commit a583969fc3
3 changed files with 18 additions and 44 deletions

View File

@@ -1,18 +1,17 @@
#include "../vulkan_state.h" #include "../vulkan_state.h"
DECLARE_VULKAN_COMMAND(Draw) BEGIN_DECLARE_VULKAN_COMMAND(ClearColor)
{ float r;
float g;
} float b;
float a;
BEGIN_VULKAN_COMMAND_DATA(Draw) IImage *pImage;
{"", VULKAN_PARAMETER_TYPE_UINT32}, END_DECLARE_VULKAN_COMMAND(ClearColor)
END_VULKAN_COMMAND_DATA()
DECLARE_VULKAN_COMMAND(ClearColor) DECLARE_VULKAN_COMMAND(ClearColor)
{ {
CVkImage *pImage = (CVkImage*)GetImageParam("Image"); CVkImage *pImage = (CVkImage*)pImage;
VkClearColorValue color = {.float32 = {1,0,1,0}}; VkClearColorValue color = {.float32 = {1,0,1,0}};
VkImageSubresourceRange range = { VkImageSubresourceRange range = {
.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT,
@@ -20,13 +19,4 @@ DECLARE_VULKAN_COMMAND(ClearColor)
.layerCount = 1, .layerCount = 1,
}; };
vkCmdClearColorImage(hCommandBuffer, pImage->m_image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &color, 1, &range); vkCmdClearColorImage(hCommandBuffer, pImage->m_image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &color, 1, &range);
} }
BEGIN_VULKAN_COMMAND_DATA(ClearColor)
{"R", VULKAN_PARAMETER_TYPE_FLOAT},
{"G", VULKAN_PARAMETER_TYPE_FLOAT},
{"B", VULKAN_PARAMETER_TYPE_FLOAT},
{"A", VULKAN_PARAMETER_TYPE_FLOAT},
{"Image", VULKAN_PARAMETER_TYPE_IMAGE},
END_VULKAN_COMMAND_DATA()

View File

@@ -474,11 +474,10 @@ void CVkRenderContext::Init()
g_pCommandBufferManager->Init(); g_pCommandBufferManager->Init();
IVkCommandBuffer *pCommandBuffer = g_pCommandBufferManager->CreateCommandBuffer(); IVkCommandBuffer *pCommandBuffer = g_pCommandBufferManager->CreateCommandBuffer();
CVkCommand *pCommand = g_pCommandBufferManager->CreateCommand("Draw"); CVkCommand *pCommand = g_pCommandBufferManager->CreateCommand("ClearColor");
pCommand->AddDependency(g_vkSwapchainImages[0], DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION);
pCommand->SetImageParam("Image", g_vkSwapchainImages[0]);
pCommandBuffer->AddCommand(pCommand);
pCommand->AddDependency(g_vkSwapchainImages[0], DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION);
pCommandBuffer->AddCommand(pCommand);
pCommandBuffer->Render(); pCommandBuffer->Render();
} }

View File

@@ -89,13 +89,6 @@ public:
CUtlVector<VulkanCommandDepenency_t> m_depedencies; CUtlVector<VulkanCommandDepenency_t> m_depedencies;
EVulkanCommandType m_eType; EVulkanCommandType m_eType;
void SetUIntParam( const char *szName, uint32_t uintParam );
uint32_t GetUIntParam( const char *szName );
void SetImageParam( const char *szName, IImage *pImageParam );
IImage *GetImageParam( const char *szName );
virtual CUtlVector<VulkanCommandParameter_t> GetDataTemplate() = 0;
CUtlVector<VulkanCommandParameter_t> m_parameters;
}; };
abstract_class IVkCommandBuffer abstract_class IVkCommandBuffer
@@ -125,27 +118,19 @@ public:
CVkCommandRegistry( const char *szName, fnCreateVulkanCommand_t pfnCreate ); CVkCommandRegistry( const char *szName, fnCreateVulkanCommand_t pfnCreate );
}; };
#define DECLARE_VULKAN_COMMAND( name ) \ #define BEGIN_DECLARE_VULKAN_COMMAND( name ) \
class VulkanCommand_##name : public CVkCommand \ class CVk##Command : public CVkCommand \
{ \ { \
public: \ public: \
virtual void Execute( VkCommandBuffer hCommandBuffer ) override; \ virtual void Execute( VkCommandBuffer hCommandBuffer ) override; \
virtual CUtlVector<VulkanCommandParameter_t> GetDataTemplate() override; \
#define END_DECLARE_VULKAN_COMMAND( name ) \
}; \ }; \
CVkCommand *_VulkanCommandCreate_##name() { return new VulkanCommand_##name; } \
#define DECLARE_VULKAN_COMMAND(name) \
CVkCommand *_VulkanCommandCreate_##name() { return new CVk##Command; } \
CVkCommandRegistry _VulkanCommandRegistry_##name( #name, _VulkanCommandCreate_##name ); \ CVkCommandRegistry _VulkanCommandRegistry_##name( #name, _VulkanCommandCreate_##name ); \
void VulkanCommand_##name::Execute( VkCommandBuffer hCommandBuffer ) \ void CVk##Command::Execute( VkCommandBuffer hCommandBuffer ) \
#define BEGIN_VULKAN_COMMAND_DATA(name) \
CUtlVector<VulkanCommandParameter_t> VulkanCommand_##name::GetDataTemplate() \
{ \
CUtlVector<VulkanCommandParameter_t> parameters = {
#define END_VULKAN_COMMAND_DATA() \
}; \
return parameters; \
};
#undef __cplusplus #undef __cplusplus
#include "vulkan/vk_enum_string_helper.h" #include "vulkan/vk_enum_string_helper.h"