Commit Graph

20 Commits

Author SHA1 Message Date
devin doucette
796e62e1ae DDC: Added a missing #include
#rb trivial
#rnx

#ROBOMERGE-SOURCE: CL 16326010 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v804-16311228)

[CL 16326020 by devin doucette in ue5-release-engine-test branch]
2021-05-13 23:23:18 -04:00
devin doucette
13add511a0 DDC: Changed the builder types to delete themselves on Build()
#rb Zousar.Shaker
#rnx

#ROBOMERGE-SOURCE: CL 16317751 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v804-16311228)

[CL 16317760 by devin doucette in ue5-release-engine-test branch]
2021-05-13 16:10:05 -04:00
devin doucette
ec088e92a9 DDC: Added support for cache records with null data
#rb Zousar.Shaker
#rnx
#preflight 609b6698b16d45000155cb04

#ROBOMERGE-SOURCE: CL 16298475 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v800-16297934)

[CL 16298478 by devin doucette in ue5-release-engine-test branch]
2021-05-12 09:28:22 -04:00
Devin Doucette
536b5fa4dc DDC: Updated documentation and removed unnecessary explicit hash construction
#rb trivial
#rnx

[CL 16207037 by Devin Doucette in ue5-main branch]
2021-05-05 10:15:34 -04:00
Devin Doucette
e39324b347 DDC: Changed FCacheRecord to be reference-counted instead of uniquely owned
#rb Zousar.Shaker
#rnx

[CL 16184511 by Devin Doucette in ue5-main branch]
2021-05-03 11:41:14 -04:00
Devin Doucette
84641e44fb DDC: Added an assert to FCacheRecordBuilder::BuildAsync to require a callback
#rb trivial
#rnx

[CL 16148043 by Devin Doucette in ue5-main branch]
2021-04-28 16:05:08 -04:00
Devin Doucette
e7b98e5582 DDC: Added FCacheRecord KeyFuncs, FCacheRecord::GetPayload, and FPayload(FPayloadId)
#rb Zousar.Shaker
#rnx
#preflight 608056e0d4e67000017ac573

[CL 16078733 by Devin Doucette in ue5-main branch]
2021-04-21 14:56:45 -04:00
Devin Doucette
cf7d6505f3 DDC: Tweak names and namespace formatting for consistency
#rb trivial
#rnx
#preflight 607d0e236e83200001593a45

[CL 16050392 by Devin Doucette in ue5-main branch]
2021-04-19 09:56:34 -04:00
Devin Doucette
28ef6b6386 DDC: Iteration on ICache
- Identify payloads by the hash of the raw data.
- Added FCacheKey::Empty and FCachePayloadKey::Empty for convenience.
- Changed FCacheRecord and FCacheRecordBuilder constructors to be private.
- Changed storage in the legacy cache to store values inline for records with no attachments.
- Changed storage in the legacy cache to use CAS within each bucket.
- Improved wording and details in assert messages.

#rb Zousar.Shaker
#rnx

[CL 15984411 by Devin Doucette in ue5-main branch]
2021-04-12 18:25:18 -04:00
Devin Doucette
5d93c9c31e CompressedBuffer: Added FHeader::TotalCompressedSize and FCompressedBuffer::FromCompressed(FArchive&)
#rb Tim.Smith
#rnx

[CL 15946194 by Devin Doucette in ue5-main branch]
2021-04-07 17:13:31 -04:00
Devin Doucette
ab4a43d5db CompressedBuffer: Implemented a stable format for compressed buffers with support for no compression and LZ4
#rb Tim.Smith

[CL 15895927 by Devin Doucette in ue5-main branch]
2021-04-01 16:31:55 -04:00
Devin Doucette
490d684d40 DDC: Clean up a few details in the new Cache API
#rb Zousar.Shaker
#rnx

[CL 15681766 by Devin Doucette in ue5-main branch]
2021-03-11 18:12:08 -04:00
Devin Doucette
7d5d9f3798 DDC: Clean up a few details in the new Cache API and remove the last exported type from DDC
#rb Zousar.Shaker
#rnx

[CL 15670275 by Devin Doucette in ue5-main branch]
2021-03-10 17:33:38 -04:00
Devin Doucette
017b41eb57 DDC: Refactored the new Cache API to support its use through only an interface dependency
#rb Zousar.Shaker
#rnx

[CL 15666872 by Devin Doucette in ue5-main branch]
2021-03-10 12:23:29 -04:00
Devin Doucette
7e2e44ebf4 DDC: Refactored the Cache API to prepare for the Build API
- Removed the "Cache" prefix from ECachePriority, FCacheRequest, ICacheRequest, FCachePayload, FCachePayloadId to allow reuse in the Build API.
- Added FCompressedBuffer as the starting point for the API for creating and accessing compressed buffers.

#rb Zousar.Shaker
#rnx

[CL 15511723 by Devin Doucette in ue5-main branch]
2021-02-24 01:37:45 -04:00
Devin Doucette
b5ae234c7c CompactBinary: Renamed view types to use a View suffix, and remove the Ref suffix from types that hold a SharedBuffer
#rb Zousar.Shaker
#rnx

[CL 15493834 by Devin Doucette in ue5-main branch]
2021-02-22 16:34:05 -04:00
Devin Doucette
c13b0dbecf DDC: Updated the new cache interface to expose compression of cache records
- FCacheRecord must now be created by FCacheRecordBuilder.
- FCacheRecord values are always an opaque buffer now, and ECacheRecordType has been removed.
- FCachePayload has been added as a common type for the cache record value and attachments.
- FCachePayloadId has been added as a 12-byte identifier for cache payloads.
- ICache::GetAttachments is now GetPayloads and can fetch both values and attachments.
- ECachePriority::Blocking has been added for requests that the caller will block on.

#rb Zousar.Shaker
#rnx

[CL 15471951 by Devin Doucette in ue5-main branch]
2021-02-19 11:26:34 -04:00
Devin Doucette
594e45bada DDC: Fixed an error in FCacheRecord::SetBinary
#rb none
#rnx

[CL 15278526 by Devin Doucette in ue5-main branch]
2021-02-02 02:24:52 -04:00
Devin Doucette
90298de5c2 DDC: Added the value hash to FCacheRecord and made it easier to access object values
#rb Matt.Peters
#rnx

[CL 15237973 by Devin Doucette in ue5-main branch]
2021-01-28 09:50:58 -04:00
Devin Doucette
7bd5b197e8 DDC: Added the new cache interface UE::DerivedData::ICache
ICache will eventually replace the existing cache access functions on FDerivedDataCacheInterface. The notable differences relative to the existing interface are:

- It is asynchronous with completion callbacks by default, and allows waiting when necessary.
- It allows batch requests containing multiple cache records by default.
- It uses a structured cache key made up of a bucket name and a hash.
- It supports prioritization and cancellation of requests.
- It supports structured cache records with metadata.
- It supports attachments to allow multi-part cache records.
- It uses a typed request object instead of an opaque integer handle.
- It provides cache policy flags to control how to query and store cache records, and which parts of a cache record to fetch.

This initial implementation of ICache is totally synchronous and uses the existing cache backends for storage.

#rb Zousar.Shaker

[CL 15152247 by Devin Doucette in ue5-main branch]
2021-01-21 01:57:01 -04:00