61 lines
1.9 KiB
C++
61 lines
1.9 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "VulkanMemory.h"
|
|
#include "VulkanResources.h"
|
|
#include "RHICoreTransientResourceAllocator.h"
|
|
|
|
class FVulkanTransientHeap final
|
|
: public FRHITransientHeap
|
|
, public FRefCountBase
|
|
, public VulkanRHI::FDeviceChild
|
|
{
|
|
public:
|
|
FVulkanTransientHeap(const FInitializer& Initializer, FVulkanDevice* InDevice);
|
|
~FVulkanTransientHeap();
|
|
|
|
VkDeviceMemory GetMemoryHandle();
|
|
static VulkanRHI::FVulkanAllocation GetVulkanAllocation(const FRHITransientHeapAllocation& TransientInitializer);
|
|
|
|
private:
|
|
VkBuffer VulkanBuffer;
|
|
VkMemoryRequirements MemoryRequirements;
|
|
VulkanRHI::FVulkanAllocation InternalAllocation;
|
|
};
|
|
|
|
|
|
class FVulkanTransientHeapCache final
|
|
: public FRHITransientHeapCache
|
|
, public VulkanRHI::FDeviceChild
|
|
{
|
|
public:
|
|
static FVulkanTransientHeapCache* Create(FVulkanDevice* InDevice);
|
|
|
|
FRHITransientHeap* CreateHeap(const FRHITransientHeap::FInitializer& Initializer) override;
|
|
|
|
private:
|
|
FVulkanTransientHeapCache(const FInitializer& Initializer, FVulkanDevice* InDevice);
|
|
};
|
|
|
|
|
|
class FVulkanTransientResourceAllocator final
|
|
: public FRHITransientResourceHeapAllocator
|
|
, public VulkanRHI::FDeviceChild
|
|
{
|
|
public:
|
|
FVulkanTransientResourceAllocator(FVulkanTransientHeapCache& InHeapCache);
|
|
|
|
//! IRHITransientResourceAllocator Overrides
|
|
bool SupportsResourceType(ERHITransientResourceType InType) const override
|
|
{
|
|
switch (InType)
|
|
{
|
|
case ERHITransientResourceType::Buffer: return true;
|
|
case ERHITransientResourceType::Texture: return true;
|
|
default: checkNoEntry(); return false;
|
|
}
|
|
}
|
|
FRHITransientTexture* CreateTexture(const FRHITextureCreateInfo& InCreateInfo, const TCHAR* InDebugName, const FRHITransientAllocationFences& Fences) override;
|
|
FRHITransientBuffer* CreateBuffer(const FRHIBufferCreateInfo& InCreateInfo, const TCHAR* InDebugName, const FRHITransientAllocationFences& Fences) override;
|
|
}; |