7 #ifndef PXR_EXEC_EF_OUTPUT_VALUE_CACHE_H
8 #define PXR_EXEC_EF_OUTPUT_VALUE_CACHE_H
23 #include <tbb/spin_rw_mutex.h>
66 _lock(cache->_mutex, true)
72 return _cache->_IsEmpty();
79 return _cache->_IsUncached(request);
87 return _cache->_GetUncached(request);
96 return _cache->_GetValue(output, mask);
110 return _cache->_SetValue(output, value, mask);
117 return _cache->_Invalidate(output);
125 return _cache->_Invalidate(outputs);
132 return _cache->_Clear();
136 Ef_OutputValueCache *_cache;
137 tbb::spin_rw_mutex::scoped_lock _lock;
156 _lock(cache->_mutex, false)
165 return _cache->_GetValue(output, mask);
169 Ef_OutputValueCache *_cache;
170 tbb::spin_rw_mutex::scoped_lock _lock;
176 bool _ContainsOutput(
const VdfOutput &output)
const;
179 void _AddOutput(
const VdfOutput &output);
182 void _RemoveOutput(
const VdfOutput &output);
200 size_t _Invalidate(
const VdfOutput &outut);
209 bool _IsEmpty()
const;
212 bool _IsUncached(
const VdfRequest &request)
const;
228 size_t GetNumBytes()
const;
231 const VdfMask &GetMask()
const {
277 _OutputsMap _outputs;
283 tbb::spin_rw_mutex _mutex;
SharedAccess(Ef_OutputValueCache *cache)
const VdfVector * GetValue(const VdfOutput &output, const VdfMask &mask) const
const SharedAccess & operator=(const SharedAccess &)=delete
size_t Invalidate(const VdfMaskedOutputVector &outputs)
#define PXR_NAMESPACE_OPEN_SCOPE
GLsizei const GLfloat * value
SharedAccess(const SharedAccess &)=delete
A VdfMask is placed on connections to specify the data flowing through them.
ExclusiveAccess(const ExclusiveAccess &)=delete
An output-to-value storage for caching. The class provides accessor types for thread-safe, as well as unprotected access.
const ExclusiveAccess & operator=(const ExclusiveAccess &)=delete
bool IsUncached(const VdfRequest &request) const
Fast bit array that keeps track of the number of bits set and can find the next set in a timely manne...
size_t SetValue(const VdfOutput &output, const VdfVector &value, const VdfMask &mask)
ExclusiveAccess(Ef_OutputValueCache *cache)
EF_API ~Ef_OutputValueCache()
size_t Invalidate(const VdfOutput &output)
VdfRequest GetUncached(const VdfRequest &request) const
#define PXR_NAMESPACE_CLOSE_SCOPE
EF_API Ef_OutputValueCache()
const VdfVector * GetValue(const VdfOutput &output, const VdfMask &mask) const
std::vector< VdfMaskedOutput > VdfMaskedOutputVector