Files
UnrealEngineUWP/Engine/Source/Developer/DerivedDataCache/Private/DerivedDataPayload.cpp
devin doucette 8161902f38 DDC: Exposed payload compression block size through the cache record and build function interfaces
#rb Zousar.Shaker
#rnx
#preflight 61b7721bdd0e83c861a420d8

#ROBOMERGE-AUTHOR: devin.doucette
#ROBOMERGE-SOURCE: CL 18444327 in //UE5/Release-5.0/... via CL 18445345
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18445509 by devin doucette in ue5-release-engine-test branch]
2021-12-13 13:44:06 -05:00

64 lines
2.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "DerivedDataPayload.h"
#include "Compression/OodleDataCompression.h"
#include "Containers/StringConv.h"
#include "Hash/xxhash.h"
#include "Serialization/CompactBinary.h"
#include "Templates/UnrealTemplate.h"
namespace UE::DerivedData
{
constexpr ECompressedBufferCompressor GDefaultCompressor = ECompressedBufferCompressor::Mermaid;
constexpr ECompressedBufferCompressionLevel GDefaultCompressionLevel = ECompressedBufferCompressionLevel::VeryFast;
FPayloadId::FPayloadId(const FMemoryView Id)
{
checkf(Id.GetSize() == sizeof(ByteArray),
TEXT("FPayloadId cannot be constructed from a view of %" UINT64_FMT " bytes."), Id.GetSize());
FMemory::Memcpy(Bytes, Id.GetData(), sizeof(ByteArray));
}
FPayloadId::FPayloadId(const FCbObjectId& Id)
: FPayloadId(ImplicitConv<const ByteArray&>(Id))
{
}
FPayloadId::operator FCbObjectId() const
{
return FCbObjectId(ImplicitConv<const ByteArray&>(*this));
}
FPayloadId FPayloadId::FromHash(const FIoHash& Hash)
{
checkf(!Hash.IsZero(), TEXT("FPayloadId requires a non-zero hash."));
return FPayloadId(MakeMemoryView(Hash.GetBytes()).Left(sizeof(ByteArray)));
}
FPayloadId FPayloadId::FromName(const FUtf8StringView Name)
{
checkf(!Name.IsEmpty(), TEXT("FPayloadId requires a non-empty name."));
uint8 HashBytes[16];
FXxHash128::HashBuffer(Name.GetData(), Name.Len()).ToByteArray(HashBytes);
return FPayloadId(MakeMemoryView(HashBytes, sizeof(ByteArray)));
}
FPayloadId FPayloadId::FromName(const FWideStringView Name)
{
return FPayloadId::FromName(FTCHARToUTF8(Name));
}
FCompressedBuffer FPayload::Compress(const FCompositeBuffer& Buffer, const uint64 BlockSize)
{
return FCompressedBuffer::Compress(Buffer, GDefaultCompressor, GDefaultCompressionLevel, BlockSize);
}
FCompressedBuffer FPayload::Compress(const FSharedBuffer& Buffer, const uint64 BlockSize)
{
return FCompressedBuffer::Compress(Buffer, GDefaultCompressor, GDefaultCompressionLevel, BlockSize);
}
} // UE::DerivedData