OGRE-Next 3.0.0
Object-Oriented Graphics Rendering Engine
Loading...
Searching...
No Matches
Ogre::GL3PlusTextureGpuManager Class Referencefinal

#include <OgreGL3PlusTextureGpuManager.h>

+ Inheritance diagram for Ogre::GL3PlusTextureGpuManager:

Public Member Functions

 GL3PlusTextureGpuManager (VaoManager *vaoManager, RenderSystem *renderSystem, const GL3PlusSupport &support)
 
 ~GL3PlusTextureGpuManager () override
 
TextureGpu * createTextureGpuHeadlessWindow (GL3PlusContext *context, Window *window)
 See EglPBufferWindow.
 
TextureGpu * createTextureGpuWindow (GL3PlusContext *context, Window *window)
 Creates a special GL3PlusTextureGpuWindow pointer, to be used by Ogre::Window.
 
GLuint getBlankTextureGlName (TextureTypes::TextureTypes textureType) const
 
const GL3PlusSupport & getGlSupport () const
 
GLuint getTemporaryFbo (uint32 fboIdx) const
 fboIdx must be in range [0; 1]
 
- Public Member Functions inherited from Ogre::TextureGpuManager
 TextureGpuManager (VaoManager *vaoManager, RenderSystem *renderSystem)
 
 ~TextureGpuManager () override
 
void _queueDownloadToRam (TextureGpu *texture, bool resyncOnly)
 
void _releaseSlotFromTexture (TextureGpu *texture)
 Must be called from main thread.
 
void _removeMetadataCacheEntry (TextureGpu *texture)
 
void _reserveSlotForTexture (TextureGpu *texture)
 Must be called from main thread.
 
void _scheduleTransitionTo (TextureGpu *texture, GpuResidency::GpuResidency targetResidency, Image2 *image, bool autoDeleteImage, bool reuploadOnly, bool bSkipMultiload)
 
void _scheduleUpdate (TextureGpu *texture, uint32 filters, Image2 *image, bool autoDeleteImage, bool skipMetadataCache=false, uint32 sliceOrDepth=std::numeric_limits< uint32 >::max())
 
void _setIgnoreScheduledTasks (bool ignoreSchedTasks)
 When true we will ignore all tasks in mScheduledTasks and execute transitions immediately Caller is responsible for ensuring this is safe to do.
 
bool _update (bool syncWithWorkerThread)
 Returns true if there is no more streaming work to be done yet (if false, calls to _update could be needed once again) See waitForStreamingCompletion.
 
void _updateMetadataCache (TextureGpu *texture)
 
void _updateStreaming ()
 
unsigned long _updateStreamingWorkerThread (ThreadHandle *threadHandle)
 
unsigned long _updateTextureMultiLoadWorkerThread (ThreadHandle *threadHandle)
 Implements multiload.
 
void _waitFor (TextureGpu *texture, bool metadataOnly)
 Do not use directly. See TextureGpu::waitForMetadata & TextureGpu::waitForDataReady.
 
void _waitForPendingGpuToCpuSyncs (TextureGpu *texture)
 Do not use directly. See TextureGpu::waitForPendingSyncs.
 
virtual bool checkSupport (PixelFormatGpu format, TextureTypes::TextureTypes textureType, uint32 textureFlags) const
 Checks if the given format with the texture flags combination is supported.
 
AsyncTextureTicket * createAsyncTextureTicket (uint32 width, uint32 height, uint32 depthOrSlices, TextureTypes::TextureTypes textureType, PixelFormatGpu pixelFormatFamily)
 Creates an AsyncTextureTicket that can be used to download data GPU -> CPU from a TextureGpu.
 
TextureGpu * createOrRetrieveTexture (const String &name, const String &aliasName, GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, CommonTextureTypes::CommonTextureTypes type, const String &resourceGroup=BLANKSTRING, uint32 poolId=0)
 Helper function to call createOrRetrieveTexture with common parameters used for 2D diffuse textures loaded from file.
 
TextureGpu * createOrRetrieveTexture (const String &name, const String &aliasName, GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, uint32 textureFlags, TextureTypes::TextureTypes initialType, const String &resourceGroup=BLANKSTRING, uint32 filters=0, uint32 poolId=0)
 
TextureGpu * createOrRetrieveTexture (const String &name, GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, CommonTextureTypes::CommonTextureTypes type, const String &resourceGroup=BLANKSTRING, uint32 poolId=0)
 
TextureGpu * createOrRetrieveTexture (const String &name, GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, uint32 textureFlags, TextureTypes::TextureTypes initialType, const String &resourceGroup=BLANKSTRING, uint32 filters=0, uint32 poolId=0)
 
TextureGpu * createTexture (const String &name, const String &aliasName, GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, uint32 textureFlags, TextureTypes::TextureTypes initialType, const String &resourceGroup=BLANKSTRING, uint32 filters=0, uint32 poolId=0)
 
TextureGpu * createTexture (const String &name, GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, uint32 textureFlags, TextureTypes::TextureTypes initialType, const String &resourceGroup=BLANKSTRING, uint32 filters=0, uint32 poolId=0)
 
void destroyAllAsyncTextureTicket ()
 
void destroyAsyncTextureTicket (AsyncTextureTicket *ticket)
 
void destroyTexture (TextureGpu *texture)
 Destroys a texture.
 
void dumpMemoryUsage (Log *log, Ogre::uint32 mask=ResidencyMask::All) const
 
void dumpStats () const
 
void exportTextureMetadataCache (String &outJson)
 
const String * findAliasNameStr (IdString idName) const
 This function CAN be called from any thread.
 
const String * findResourceGroupStr (IdString idName) const
 This function CAN be called from any thread.
 
const String * findResourceNameStr (IdString idName) const
 This function CAN be called from any thread.
 
TextureGpu * findTextureNoThrow (IdString name) const
 
const BudgetEntryVec & getBudget () const
 
DefaultMipmapGen::DefaultMipmapGen getDefaultMipmapGeneration () const
 
DefaultMipmapGen::DefaultMipmapGen getDefaultMipmapGenerationCubemaps () const
 
const ResourceEntryMap & getEntries () const
 
uint64 getLoadRequestsCounter () const
 Calling waitForStreamingCompletion before Root::renderOneFrame should guarantee the render is perfect.
 
void getMemoryStats (size_t &outTextureBytesCpu, size_t &outTextureBytesGpu, size_t &outUsedStagingTextureBytes, size_t &outAvailableStagingTextureBytes)
 
bool getProfileLoadingTime () const
 
RenderSystem * getRenderSystem () const
 
StagingTexture * getStagingTexture (uint32 width, uint32 height, uint32 depth, uint32 slices, PixelFormatGpu pixelFormat, size_t minConsumptionRatioThreshold=25u)
 Creates a StagingTexture which is required to upload data CPU -> GPU into a TextureGpu.
 
VaoManager * getVaoManager () const
 
bool hasPoolId (uint32 poolId, uint32 width, uint32 height, uint8 numMipmaps, PixelFormatGpu pixelFormat) const
 
bool hasTextureResource (const String &aliasName, const String &resourceGroup) const
 Returns true if a texture with the given aliasName exists, or if a ResourceGroupListener provides such texture, or if such texture exists (i.e.
 
void importTextureMetadataCache (const String &filename, const char *jsonString, bool bCreateReservedPools)
 
bool isDoneStreaming () const
 Returns true if we're done loading all textures based on the return value of the last call to TextureGpuManager::_update and whether new tasks have been scheduled since then.
 
void notifyTextureChanged (TextureGpu *texture, TextureGpuListener::Reason reason, void *extraData) override
 
void removeStagingTexture (StagingTexture *stagingTexture)
 
TextureGpu * reservePoolId (uint32 poolId, uint32 width, uint32 height, uint32 numSlices, uint8 numMipmaps, PixelFormatGpu pixelFormat)
 Reserves and preallocates a pool with the given parameters Returns the master texture that owns the pool.
 
void saveTexture (TextureGpu *texture, const String &folderPath, set< String >::type &savedTextures, bool saveOitd, bool saveOriginal, HlmsTextureExportListener *listener)
 
void setDefaultMipmapGeneration (DefaultMipmapGen::DefaultMipmapGen defaultMipmapGen, DefaultMipmapGen::DefaultMipmapGen defaultMipmapGenCubemaps)
 Whether to use HW or SW mipmap generation when specifying TextureFilter::TypeGenerateDefaultMipmaps for loading files from textures.
 
void setMultiLoadPool (uint32 numThreads)
 OgreNext always performs background streaming to load textures in a worker thread.
 
void setProfileLoadingTime (bool bProfile)
 When enabled, we will profile the time it takes a texture to go from Resident to Ready and Log it.
 
void setStagingTextureMaxBudgetBytes (size_t stagingTextureMaxBudgetBytes)
 At a high level, texture loading works like this:
 
void setTextureGpuManagerListener (TextureGpuManagerListener *listener)
 Sets a new listener.
 
void setTrylockMutexFailureLimit (uint32 tryLockFailureLimit)
 The main thread tries to acquire a lock from the background thread, do something very quick, and release it.
 
void setWorkerThreadMaxPerStagingTextureRequestBytes (size_t maxPerStagingTextureRequestBytes)
 The worker thread tracks how many data it is loading so the Main thread can request additional StagingTextures if necessary.
 
void setWorkerThreadMaxPreloadBytes (size_t maxPreloadBytes)
 The worker thread first loads the texture from disk to RAM (aka "preload", and then copies from RAM to StagingTexture.
 
void setWorkerThreadMinimumBudget (const BudgetEntryVec &budget, uint32 maxSplitResolution=0)
 Background streaming works by having a bunch of preallocated StagingTextures so we're ready to start uploading as soon as we see a request to load a texture from file.
 
void shutdown ()
 
void waitForStreamingCompletion ()
 Blocks main thread until all pending textures are fully loaded.
 
- Public Member Functions inherited from Ogre::TextureGpuListener
virtual ~TextureGpuListener ()
 
virtual bool shouldStayLoaded (TextureGpu *texture)
 Return true if this TextureGpu should likely stay loaded or else graphical changes could occur.
 

Additional Inherited Members

- Public Types inherited from Ogre::TextureGpuManager
typedef vector< BudgetEntry >::type BudgetEntryVec
 
typedef map< IdString, MetadataCacheEntry >::type MetadataCacheMap
 
typedef map< IdString, ResourceEntry >::type ResourceEntryMap
 
- Public Types inherited from Ogre::TextureGpuListener
enum  Reason {
  Unknown , FromStorageToSysRam , FromSysRamToStorage , GainedResidency ,
  LostResidency , PoolTextureSlotChanged , ResidentToSysRamSync , MetadataCacheOutOfDate ,
  ExceptionThrown , FsaaSettingAlteredByApi , ReadyForRendering , Deleted
}
 
- Public Attributes inherited from Ogre::TextureGpuManager
bool mIgnoreSRgbPreference
 While true, calls to createTexture & createOrRetrieveTexture will ignore and unset the TextureFlags::PrefersLoadingFromFileAsSRGB flag.
 

Constructor & Destructor Documentation

◆ GL3PlusTextureGpuManager()

Ogre::GL3PlusTextureGpuManager::GL3PlusTextureGpuManager ( VaoManager * vaoManager,
RenderSystem * renderSystem,
const GL3PlusSupport & support )

◆ ~GL3PlusTextureGpuManager()

Ogre::GL3PlusTextureGpuManager::~GL3PlusTextureGpuManager ( )
override

Member Function Documentation

◆ createTextureGpuHeadlessWindow()

TextureGpu * Ogre::GL3PlusTextureGpuManager::createTextureGpuHeadlessWindow ( GL3PlusContext * context,
Window * window )

See EglPBufferWindow.

We do not track this pointer. If caller doesn't delete it, it will leak.

◆ createTextureGpuWindow()

TextureGpu * Ogre::GL3PlusTextureGpuManager::createTextureGpuWindow ( GL3PlusContext * context,
Window * window )

Creates a special GL3PlusTextureGpuWindow pointer, to be used by Ogre::Window.

The pointer can be freed by a regular OGRE_DELETE. We do not track this pointer. If caller doesn't delete it, it will leak.

◆ getBlankTextureGlName()

GLuint Ogre::GL3PlusTextureGpuManager::getBlankTextureGlName ( TextureTypes::TextureTypes textureType) const

◆ getGlSupport()

const GL3PlusSupport & Ogre::GL3PlusTextureGpuManager::getGlSupport ( ) const
inline

◆ getTemporaryFbo()

GLuint Ogre::GL3PlusTextureGpuManager::getTemporaryFbo ( uint32 fboIdx) const
inline

fboIdx must be in range [0; 1]


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