Files
UnrealEngine/Engine/Source/Runtime/RHI/Public/RHIAllocators.h
2025-05-18 13:04:45 +08:00

25 lines
1.4 KiB
C

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
RHIAllocators.h: Render Hardware Interface allocators
=============================================================================*/
#pragma once
#include "Experimental/ConcurrentLinearAllocator.h"
// Same of FDefaultBlockAllocationTag but custom TagName
struct FCommandListBaseBlockAllocationTag
{
static constexpr uint32 BlockSize = 64 * 1024; // Blocksize used to allocate from
static constexpr bool AllowOversizedBlocks = true; // The allocator supports oversized Blocks and will store them in a separate Block with counter 1
static constexpr bool RequiresAccurateSize = true; // GetAllocationSize returning the accurate size of the allocation otherwise it could be relaxed to return the size to the end of the Block
static constexpr bool InlineBlockAllocation = false; // Inline or Noinline the BlockAllocation which can have an impact on Performance
static constexpr const char* TagName = "RHICommandListBaseAllocator";
using Allocator = TBlockAllocationLockFreeCache<BlockSize, FAlignedAllocator>;
};
using FRHICmdListBaseArrayAllocator = TConcurrentLinearArrayAllocator<FCommandListBaseBlockAllocationTag>;
using FRHICmdListBaseSetAllocator = TConcurrentLinearSetAllocator<FCommandListBaseBlockAllocationTag>;
using FRHICmdListBaseLinearAllocator = TConcurrentLinearAllocator<FCommandListBaseBlockAllocationTag>;