something
This commit is contained in:
@@ -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()
|
|
||||||
|
|||||||
@@ -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->AddDependency(g_vkSwapchainImages[0], DEPENDENCY_MODE_COLOR_CLEAR_DESTINATION);
|
||||||
pCommand->SetImageParam("Image", g_vkSwapchainImages[0]);
|
|
||||||
pCommandBuffer->AddCommand(pCommand);
|
pCommandBuffer->AddCommand(pCommand);
|
||||||
|
|
||||||
pCommandBuffer->Render();
|
pCommandBuffer->Render();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user