Grok 20.3.2
grk::TileCompletion Class Reference

Tracks per-tile completion and fires row callbacks for incremental compositing. More...

#include <TileCompletion.h>

Public Types

using RowCompletionCallback = std::function<void(uint16_t tileIndexBegin, uint16_t tileIndexEnd)>
using RowsReleasedCallback = std::function<void()>

Public Member Functions

 TileCompletion (TileCache *tileCache, const Rect32 &imageBounds, uint32_t tileWidth, uint32_t tileHeight, RowCompletionCallback callback, RowsReleasedCallback rowsReleasedCallback=nullptr, std::optional< Rect16 > tileSubRegion=std::nullopt)
void complete (uint16_t tileIndex)
bool wait (grk_wait_swath *swath)
int32_t getLastClearedTileY () const
void setLastClearedTileY (int32_t val)
int32_t getNeededTileY1 () const
uint16_t getNumTileCols () const

Private Attributes

TileCachetileCache_ = nullptr
SimpleHeap< uint16_t > heap_
std::vector< bool > completedTiles_
std::vector< uint16_t > completedTilesPerRow_
int32_t localWaitEnd_ = -1
int32_t localContiguousEnd_ = -1
std::mutex mutex_
std::condition_variable completionCV_
uint16_t numTileCols_
uint16_t numTileRows_
uint32_t tileWidth_
uint32_t tileHeight_
Rect32 imageBounds_
uint16_t tileX0_
uint16_t tileX1_
uint16_t tileY0_
uint16_t tileY1_
uint16_t subregionWidth_
uint16_t subregionHeight_
uint16_t currentTileY_
int32_t lastClearedTileY_
std::atomic< int32_t > neededTileY1_ {0}
RowCompletionCallback rowCallback_
RowsReleasedCallback rowsReleasedCallback_

Detailed Description

Tracks per-tile completion and fires row callbacks for incremental compositing.

See also
doc/IncrementalStripeCompositing.md for the full incremental write pipeline.

Member Typedef Documentation

◆ RowCompletionCallback

using grk::TileCompletion::RowCompletionCallback = std::function<void(uint16_t tileIndexBegin, uint16_t tileIndexEnd)>

◆ RowsReleasedCallback

using grk::TileCompletion::RowsReleasedCallback = std::function<void()>

Constructor & Destructor Documentation

◆ TileCompletion()

grk::TileCompletion::TileCompletion ( TileCache * tileCache,
const Rect32 & imageBounds,
uint32_t tileWidth,
uint32_t tileHeight,
RowCompletionCallback callback,
RowsReleasedCallback rowsReleasedCallback = nullptr,
std::optional< Rect16 > tileSubRegion = std::nullopt )
inline

Member Function Documentation

◆ complete()

◆ getLastClearedTileY()

int32_t grk::TileCompletion::getLastClearedTileY ( ) const
inline

References lastClearedTileY_, and mutex_.

◆ getNeededTileY1()

int32_t grk::TileCompletion::getNeededTileY1 ( ) const
inline

References neededTileY1_.

◆ getNumTileCols()

uint16_t grk::TileCompletion::getNumTileCols ( ) const
inline

References numTileCols_.

◆ setLastClearedTileY()

void grk::TileCompletion::setLastClearedTileY ( int32_t val)
inline

References lastClearedTileY_, and mutex_.

◆ wait()

Member Data Documentation

◆ completedTiles_

std::vector<bool> grk::TileCompletion::completedTiles_
private

Referenced by complete(), TileCompletion(), and wait().

◆ completedTilesPerRow_

std::vector<uint16_t> grk::TileCompletion::completedTilesPerRow_
private

Referenced by complete(), and TileCompletion().

◆ completionCV_

std::condition_variable grk::TileCompletion::completionCV_
private

Referenced by complete(), and wait().

◆ currentTileY_

uint16_t grk::TileCompletion::currentTileY_
private

Referenced by TileCompletion(), and wait().

◆ heap_

SimpleHeap<uint16_t> grk::TileCompletion::heap_
private

Referenced by complete().

◆ imageBounds_

Rect32 grk::TileCompletion::imageBounds_
private

Referenced by TileCompletion(), and wait().

◆ lastClearedTileY_

int32_t grk::TileCompletion::lastClearedTileY_
private

◆ localContiguousEnd_

int32_t grk::TileCompletion::localContiguousEnd_ = -1
private

Referenced by complete(), and wait().

◆ localWaitEnd_

int32_t grk::TileCompletion::localWaitEnd_ = -1
private

Referenced by complete(), and wait().

◆ mutex_

std::mutex grk::TileCompletion::mutex_
mutableprivate

◆ neededTileY1_

std::atomic<int32_t> grk::TileCompletion::neededTileY1_ {0}
private

Referenced by getNeededTileY1(), and wait().

◆ numTileCols_

uint16_t grk::TileCompletion::numTileCols_
private

◆ numTileRows_

uint16_t grk::TileCompletion::numTileRows_
private

Referenced by TileCompletion().

◆ rowCallback_

RowCompletionCallback grk::TileCompletion::rowCallback_
private

Referenced by complete(), and TileCompletion().

◆ rowsReleasedCallback_

RowsReleasedCallback grk::TileCompletion::rowsReleasedCallback_
private

Referenced by TileCompletion(), and wait().

◆ subregionHeight_

uint16_t grk::TileCompletion::subregionHeight_
private

Referenced by TileCompletion(), and wait().

◆ subregionWidth_

uint16_t grk::TileCompletion::subregionWidth_
private

Referenced by complete(), TileCompletion(), and wait().

◆ tileCache_

TileCache* grk::TileCompletion::tileCache_ = nullptr
private

Referenced by TileCompletion(), and wait().

◆ tileHeight_

uint32_t grk::TileCompletion::tileHeight_
private

Referenced by TileCompletion(), and wait().

◆ tileWidth_

uint32_t grk::TileCompletion::tileWidth_
private

Referenced by TileCompletion(), and wait().

◆ tileX0_

uint16_t grk::TileCompletion::tileX0_
private

Referenced by complete(), TileCompletion(), and wait().

◆ tileX1_

uint16_t grk::TileCompletion::tileX1_
private

Referenced by complete(), TileCompletion(), and wait().

◆ tileY0_

uint16_t grk::TileCompletion::tileY0_
private

Referenced by complete(), TileCompletion(), and wait().

◆ tileY1_

uint16_t grk::TileCompletion::tileY1_
private

Referenced by complete(), TileCompletion(), and wait().


The documentation for this class was generated from the following file: