diff --git a/materialsystem/vulkan/commands/draw.cpp b/materialsystem/vulkan/commands/draw.cpp index 1bfe210..d87ef64 100644 --- a/materialsystem/vulkan/commands/draw.cpp +++ b/materialsystem/vulkan/commands/draw.cpp @@ -1,18 +1,17 @@ #include "../vulkan_state.h" -DECLARE_VULKAN_COMMAND(Draw) -{ - -} - -BEGIN_VULKAN_COMMAND_DATA(Draw) - {"", VULKAN_PARAMETER_TYPE_UINT32}, -END_VULKAN_COMMAND_DATA() +BEGIN_DECLARE_VULKAN_COMMAND(ClearColor) + float r; + float g; + float b; + float a; + IImage *pImage; +END_DECLARE_VULKAN_COMMAND(ClearColor) DECLARE_VULKAN_COMMAND(ClearColor) { - CVkImage *pImage = (CVkImage*)GetImageParam("Image"); + CVkImage *pImage = (CVkImage*)pImage; VkClearColorValue color = {.float32 = {1,0,1,0}}; VkImageSubresourceRange range = { .aspectMask = VK_IMAGE_ASPECT_COLOR_BIT, @@ -20,13 +19,4 @@ DECLARE_VULKAN_COMMAND(ClearColor) .layerCount = 1, }; 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() diff --git a/materialsystem/vulkan/rendercontext.cpp b/materialsystem/vulkan/rendercontext.cpp index 926afeb..746eceb 100644 --- a/materialsystem/vulkan/rendercontext.cpp +++ b/materialsystem/vulkan/rendercontext.cpp @@ -474,11 +474,10 @@ void CVkRenderContext::Init() g_pCommandBufferManager->Init(); 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); - pCommandBuffer->Render(); } diff --git a/materialsystem/vulkan/vulkan_state.h b/materialsystem/vulkan/vulkan_state.h index 18208e4..e760522 100644 --- a/materialsystem/vulkan/vulkan_state.h +++ b/materialsystem/vulkan/vulkan_state.h @@ -89,13 +89,6 @@ public: CUtlVector m_depedencies; 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 GetDataTemplate() = 0; - CUtlVector m_parameters; }; abstract_class IVkCommandBuffer @@ -125,27 +118,19 @@ public: CVkCommandRegistry( const char *szName, fnCreateVulkanCommand_t pfnCreate ); }; -#define DECLARE_VULKAN_COMMAND( name ) \ -class VulkanCommand_##name : public CVkCommand \ +#define BEGIN_DECLARE_VULKAN_COMMAND( name ) \ +class CVk##Command : public CVkCommand \ { \ public: \ virtual void Execute( VkCommandBuffer hCommandBuffer ) override; \ - virtual CUtlVector 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 ); \ -void VulkanCommand_##name::Execute( VkCommandBuffer hCommandBuffer ) \ - -#define BEGIN_VULKAN_COMMAND_DATA(name) \ -CUtlVector VulkanCommand_##name::GetDataTemplate() \ -{ \ - CUtlVector parameters = { - -#define END_VULKAN_COMMAND_DATA() \ - }; \ - return parameters; \ -}; - +void CVk##Command::Execute( VkCommandBuffer hCommandBuffer ) \ #undef __cplusplus #include "vulkan/vk_enum_string_helper.h"