Provide explicit argument for asset cache ID.

This will allow assets to cache compiled results with different parameters. For example, we could cache both an RGB version of a texture and a Mono version.

PiperOrigin-RevId: 811341377
Change-Id: Ifd6a4ff88661a2b38be47c02d6a666de2c202885
This commit is contained in:
Sam Haves
2025-09-25 07:23:11 -07:00
committed by Copybara-Service
parent 0baac58999
commit 922aebbeed
5 changed files with 79 additions and 77 deletions
+4 -4
View File
@@ -39,9 +39,9 @@ typedef void (*mjCDeallocFunc)(const void*);
class mjCAsset {
friend class mjCCache;
public:
mjCAsset(std::string modelname, const mjResource* resource,
mjCAsset(std::string modelname, std::string id, const mjResource* resource,
std::shared_ptr<const void> data, std::size_t size) :
id_(resource->name), timestamp_(resource->timestamp),
id_(id), timestamp_(resource->timestamp),
size_(size), data_(std::move(data)) {
AddReference(modelname);
}
@@ -136,11 +136,11 @@ class mjCCache {
// inserts an asset into the cache, if asset is already in the cache, its data
// is updated only if the timestamps disagree
bool Insert(const std::string& modelname, const mjResource *resource,
bool Insert(const std::string& modelname, const std::string& id, const mjResource *resource,
std::shared_ptr<const void> data, std::size_t size);
// populate data from the cache into the given function
bool PopulateData(const mjResource* resource, mjCDataFunc fn);
bool PopulateData(const std::string& id, const mjResource* resource, mjCDataFunc fn);
// deletes the asset from the cache with the given id
void DeleteAsset(const std::string& id);