initial commit
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
#pragma once
|
||||
|
||||
#include <vulkan/vulkan.h>
|
||||
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
|
||||
struct V210ComputeFeed
|
||||
{
|
||||
VkBuffer v210Buffer = VK_NULL_HANDLE;
|
||||
VkDeviceMemory v210BufferMemory = VK_NULL_HANDLE;
|
||||
void* v210MappedData = nullptr;
|
||||
|
||||
VkImage image = VK_NULL_HANDLE;
|
||||
VkDeviceMemory imageMemory = VK_NULL_HANDLE;
|
||||
VkImageView imageView = VK_NULL_HANDLE;
|
||||
VkSampler sampler = VK_NULL_HANDLE;
|
||||
|
||||
VkDescriptorSet descriptorSet = VK_NULL_HANDLE;
|
||||
|
||||
uint32_t srcWidth = 0;
|
||||
uint32_t srcHeight = 0;
|
||||
uint32_t srcStride = 0;
|
||||
};
|
||||
|
||||
class V210ComputeDecoder
|
||||
{
|
||||
public:
|
||||
void init(
|
||||
VkDevice device,
|
||||
uint32_t feedCount,
|
||||
uint32_t dstWidth,
|
||||
uint32_t dstHeight);
|
||||
|
||||
void destroy();
|
||||
|
||||
void createFeedResources(
|
||||
VkPhysicalDevice physicalDevice,
|
||||
VkCommandPool commandPool,
|
||||
VkQueue graphicsQueue,
|
||||
uint32_t feedIndex,
|
||||
uint32_t srcWidth,
|
||||
uint32_t srcHeight,
|
||||
uint32_t srcStride,
|
||||
uint32_t dstWidth,
|
||||
uint32_t dstHeight,
|
||||
V210ComputeFeed& feed);
|
||||
|
||||
void destroyFeedResources(V210ComputeFeed& feed);
|
||||
|
||||
void updateDescriptorSet(
|
||||
uint32_t feedIndex,
|
||||
const V210ComputeFeed& feed);
|
||||
|
||||
void recordDecode(
|
||||
VkCommandBuffer cmdBuf,
|
||||
uint32_t feedIndex,
|
||||
uint32_t srcWidth,
|
||||
uint32_t srcHeight,
|
||||
uint32_t srcStride,
|
||||
uint32_t dstWidth,
|
||||
uint32_t dstHeight) const;
|
||||
|
||||
void recordOutputReadyForSampling(
|
||||
VkCommandBuffer cmdBuf,
|
||||
const V210ComputeFeed& feed) const;
|
||||
|
||||
private:
|
||||
VkDevice m_device = VK_NULL_HANDLE;
|
||||
VkDescriptorSetLayout m_descriptorSetLayout = VK_NULL_HANDLE;
|
||||
VkPipelineLayout m_pipelineLayout = VK_NULL_HANDLE;
|
||||
VkPipeline m_pipeline = VK_NULL_HANDLE;
|
||||
VkDescriptorPool m_descriptorPool = VK_NULL_HANDLE;
|
||||
uint32_t m_dstWidth = 0;
|
||||
uint32_t m_dstHeight = 0;
|
||||
|
||||
std::vector<VkDescriptorSet> m_descSets;
|
||||
};
|
||||
Reference in New Issue
Block a user