OClCollMeshEngn: Produce ambience count; set postrin threshold
We modify the semantics/meaning of the ambience stim feature. It now represents the number of frames whose average intensity is below the ambienceLowVal. We can now implement the postrin as the event wherein the number of frames whose intensity <= ambienceLowVal exceeds postrin-interest-threshold.
This commit is contained in:
@@ -64,7 +64,6 @@ private:
|
||||
StagingBuffer& assemblyBuff, uint32_t nSucceeded,
|
||||
compactKernelCbFn callback);
|
||||
bool startCollateKernel(
|
||||
StagingBuffer& assemblyBuff, StagingBuffer& collationBuff,
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> intensityStimFrame,
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> ambienceStimFrame,
|
||||
collateKernelCbFn callback);
|
||||
@@ -81,6 +80,11 @@ public:
|
||||
std::chrono::milliseconds getCompactKernelDuration() const;
|
||||
std::chrono::milliseconds getCollateKernelDuration() const;
|
||||
|
||||
// Produce ambience frame from average intensity data
|
||||
void produceAmbienceStimulusFrame(
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> ambienceStimFrame,
|
||||
uint32_t nSucceeded);
|
||||
|
||||
private:
|
||||
PcloudStimulusProducer& parent;
|
||||
|
||||
@@ -94,9 +98,11 @@ private:
|
||||
// OpenCL buffers (managed by ComputeManager)
|
||||
std::shared_ptr<smo::compute::ClBuffer> clAssemblyBufferClBuffer;
|
||||
std::shared_ptr<smo::compute::ClBuffer> clCollationBufferClBuffer;
|
||||
std::shared_ptr<smo::compute::ClBuffer> clAverageIntensityBufferClBuffer;
|
||||
// Cached cl_mem handles for the device we're using
|
||||
cl_mem clAssemblyBuffer;
|
||||
cl_mem clCollationBuffer;
|
||||
cl_mem clAverageIntensityBuffer;
|
||||
|
||||
// State tracking
|
||||
SpinLock shouldAcceptRequestsLock;
|
||||
@@ -111,9 +117,12 @@ private:
|
||||
size_t assemblyBufferSize;
|
||||
void* collationBufferPtr;
|
||||
size_t collationBufferSize;
|
||||
void* averageIntensityBufferPtr;
|
||||
size_t averageIntensityBufferSize;
|
||||
// Mapped buffer pointers (for zero-copy synchronization)
|
||||
void* mappedAssemblyBuffer;
|
||||
void* mappedCollationBuffer;
|
||||
void* mappedAverageIntensityBuffer;
|
||||
|
||||
// Frame descriptor (cached from setup)
|
||||
std::shared_ptr<FrameAssemblyDesc> frameAssemblyDesc;
|
||||
@@ -142,7 +151,6 @@ private:
|
||||
bool setupSlotCompactorsArgs(
|
||||
StagingBuffer& assemblyBuff, uint32_t nSucceeded);
|
||||
bool setupCollateDgramsArgs(
|
||||
StagingBuffer& assemblyBuff,
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> intensityStimFrame,
|
||||
std::optional<std::reference_wrapper<StimulusFrame>> ambienceStimFrame);
|
||||
|
||||
@@ -156,6 +164,8 @@ private:
|
||||
bool unmapAssemblyBuffer();
|
||||
bool mapCollationBuffer(cl_map_flags mapFlags = CL_MAP_READ);
|
||||
bool unmapCollationBuffer();
|
||||
bool mapAverageIntensityBuffer(cl_map_flags mapFlags = CL_MAP_READ);
|
||||
bool unmapAverageIntensityBuffer();
|
||||
|
||||
// Forward declaration for continuation class
|
||||
class CompactCollateAndMeshFrameReq;
|
||||
|
||||
Reference in New Issue
Block a user