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

#include <OgreD3D11TextureGpuManager.h>

+ Inheritance diagram for Ogre::D3D11TextureGpuManager:

Public Member Functions

 D3D11TextureGpuManager (VaoManager *vaoManager, RenderSystem *renderSystem, D3D11Device &device)
 
 ~D3D11TextureGpuManager () override
 
void _createD3DResources ()
 
void _destroyD3DResources ()
 
TextureGpu * createTextureGpuWindow (bool fromFlipModeSwapchain, Window *window)
 Creates a special D3D11TextureGpuWindow pointer, to be used by Ogre::Window.
 
TextureGpu * createWindowDepthBuffer ()
 
ID3D11Resource * getBlankTextureD3dName (TextureTypes::TextureTypes textureType) const
 
ID3D11ShaderResourceView * getBlankTextureSrv (TextureTypes::TextureTypes textureType) const
 
D3D11Device & getDevice ()
 
- 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

◆ D3D11TextureGpuManager()

Ogre::D3D11TextureGpuManager::D3D11TextureGpuManager ( VaoManager * vaoManager,
RenderSystem * renderSystem,
D3D11Device & device )

◆ ~D3D11TextureGpuManager()

Ogre::D3D11TextureGpuManager::~D3D11TextureGpuManager ( )
override

Member Function Documentation

◆ _createD3DResources()

void Ogre::D3D11TextureGpuManager::_createD3DResources ( )

◆ _destroyD3DResources()

void Ogre::D3D11TextureGpuManager::_destroyD3DResources ( )

◆ createTextureGpuWindow()

TextureGpu * Ogre::D3D11TextureGpuManager::createTextureGpuWindow ( bool fromFlipModeSwapchain,
Window * window )

Creates a special D3D11TextureGpuWindow 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.

◆ createWindowDepthBuffer()

TextureGpu * Ogre::D3D11TextureGpuManager::createWindowDepthBuffer ( )

◆ getBlankTextureD3dName()

ID3D11Resource * Ogre::D3D11TextureGpuManager::getBlankTextureD3dName ( TextureTypes::TextureTypes textureType) const

◆ getBlankTextureSrv()

ID3D11ShaderResourceView * Ogre::D3D11TextureGpuManager::getBlankTextureSrv ( TextureTypes::TextureTypes textureType) const

◆ getDevice()

D3D11Device & Ogre::D3D11TextureGpuManager::getDevice ( )
inline

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