#pragma once #include "std/thread.h" #include "vkn/wrapper/commandpool.h" #include "vkn/wrapper/queue.h" namespace vkn { using zstd::channel; template class ThreadWorker : public zstd::ThreadWorker { protected: Name mName; Device& mDevice; Queue& mQueue; CommandPool mCommandPool; CommandBuffer mImmediateExeCmd; public: ThreadWorker(Name name, Device& device, Queue& queue, VkCommandPoolCreateFlags queueFlags) : zstd::ThreadWorker(64) , mName(name) , mDevice(device) , mQueue(queue) , mCommandPool(device, queueFlags, queue.QueueFamilyIndex()) , mImmediateExeCmd(mCommandPool.AllocateBuffer(VK_COMMAND_BUFFER_LEVEL_PRIMARY)) {} CommandPool& GetCommandPool() { return mCommandPool; } Queue& GetQueue() { return mQueue; } }; }