Optix Code/Optix7.3.0LightFIeldViewer/SDK/lib/DemandLoading/Textures/DemandTextureImpl.cpp
// Tiles can be read concurrently.  The EXRReader currently locks, however, because the OpenEXR 2.x
// tile reading API is stateful.  That should be fixed in OpenEXR 3.0.
Tiles can be read concurrently.  The EXRReader currently locks, however, because the OpenEXR 2.x
tile reading API is stateful.  That should be fixed in OpenEXR 3.0.
Tiles can be read concurrently . The EXRReader currently locks however because the OpenEXR 2 . x tile reading API is stateful . That should be fixed in OpenEXR 3 . 0 .
bool DemandTextureImpl::readTile( unsigned int mipLevel, unsigned int tileX, unsigned int tileY, char* tileBuffer, size_t tileBufferSize ) const
{
    DEMAND_ASSERT( m_isInitialized );
    DEMAND_ASSERT( mipLevel < m_info.numMipLevels );
    const unsigned int bytesPerPixel = getBytesPerChannel( getInfo().format ) * getInfo().numChannels;
    const unsigned int bytesPerTile  = getTileWidth() * getTileHeight() * bytesPerPixel;
    DEMAND_ASSERT_MSG( bytesPerTile <= tileBufferSize, "Maximum tile size exceeded" );
    return m_image->readTile( tileBuffer, mipLevel, tileX, tileY, getTileWidth(), getTileHeight() );
}
bool DemandTextureImpl :: readTile ( unsigned int mipLevel , unsigned int tileX , unsigned int tileY , char * tileBuffer , size_t tileBufferSize ) const { DEMAND_ASSERT ( m_isInitialized ) ; DEMAND_ASSERT ( mipLevel < m_info . numMipLevels ) ; const unsigned int bytesPerPixel = getBytesPerChannel ( getInfo ( ) . format ) * getInfo ( ) . numChannels ; const unsigned int bytesPerTile = getTileWidth ( ) * getTileHeight ( ) * bytesPerPixel ; DEMAND_ASSERT_MSG ( bytesPerTile <= tileBufferSize , " " ) ; return m_image -> readTile ( tileBuffer , mipLevel , tileX , tileY , getTileWidth ( ) , getTileHeight ( ) ) ; }
Tiles can be read concurrently.
Tiles can be read concurrently .
// Resize buffer if necessary.