OGRE-Next  4.0.0unstable
Object-Oriented Graphics Rendering Engine
Ogre::GL3PlusTextureGpu Class Reference

#include <OgreGL3PlusTextureGpu.h>

+ Inheritance diagram for Ogre::GL3PlusTextureGpu:

Public Member Functions

 GL3PlusTextureGpu (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, TextureGpuManager *textureManager)
 
 ~GL3PlusTextureGpu () override
 
void _autogenerateMipmaps (CopyEncTransitionMode::CopyEncTransitionMode transitionMode=CopyEncTransitionMode::Auto) override
 Tells the API to let the HW autogenerate mipmaps. More...
 
bool _isDataReadyImpl () const override
 For internal use. More...
 
void _notifyTextureSlotChanged (const TexturePool *newPool, uint16 slice) override
 
void _setToDisplayDummyTexture () override
 
void copyTo (TextureGpu *dst, const TextureBox &dstBox, uint8 dstMipLevel, const TextureBox &srcBox, uint8 srcMipLevel, bool keepResolvedTexSynced=true, CopyEncTransitionMode::CopyEncTransitionMode srcTransitionMode=CopyEncTransitionMode::Auto, CopyEncTransitionMode::CopyEncTransitionMode dstTransitionMode=CopyEncTransitionMode::Auto) override
 
void getCustomAttribute (IdString name, void *pData) override
 
GLuint getDisplayTextureName () const
 Returns the GLuid of the texture that is being displayed. More...
 
GLuint getFinalTextureName () const
 Always returns the internal handle that belongs to this texture. More...
 
GLenum getGlTextureTarget () const
 Returns GL_TEXTURE_2D / GL_TEXTURE_2D_ARRAY / etc. More...
 
GLuint getMsaaFramebufferName () const
 If MSAA > 1u and TextureFlags::MsaaExplicitResolve is not set, this returns the handle to the temporary MSAA renderbuffer used for rendering, which will later be resolved into the resolve texture. More...
 
void getSubsampleLocations (vector< Vector2 >::type locations) override
 Get the MSAA subsample locations. More...
 
void notifyDataIsReady () override
 Notifies it is safe to use the real data. Everything has been uploaded. More...
 
void setTextureType (TextureTypes::TextureTypes textureType) override
 
- Public Member Functions inherited from Ogre::TextureGpu
 TextureGpu (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, TextureGpuManager *textureManager)
 
 ~TextureGpu () override
 
uint8_getSysRamCopy (uint8 mipLevel)
 
TextureBox _getSysRamCopyAsBox (uint8 mipLevel)
 
size_t _getSysRamCopyBytesPerImage (uint8 mipLevel)
 Note: Returns non-zero even if there is no system ram copy. More...
 
uint32 _getSysRamCopyBytesPerRow (uint8 mipLevel)
 Note: Returns non-zero even if there is no system ram copy. More...
 
bool _isManualTextureFlagPresent () const
 
void _notifySysRamDownloadIsReady (uint8 *sysRamPtr, bool resyncOnly)
 Do not call directly. More...
 
void _resetTextureManager ()
 
void _resolveTo (TextureGpu *resolveTexture)
 Immediately resolves this texture to the resolveTexture argument. More...
 
virtual void _setDepthBufferDefaults (uint16 depthBufferPoolId, bool preferDepthTexture, PixelFormatGpu desiredDepthBufferFormat)
 These 3 values are used as defaults for the compositor to use, but they may be explicitly overriden by a RenderPassDescriptor. More...
 
virtual void _setNextLayout (ResourceLayout::Layout layout)
 Sets the layout the texture should be transitioned to after the next copy operation (once the copy encoder gets closed) More...
 
void _setSampleDescription (SampleDescription desc, SampleDescription validatedSampleDesc)
 For internal use. More...
 
void _setSourceType (uint8 type)
 
void _syncGpuResidentToSystemRam ()
 Forces downloading data from GPU to CPU, usually because the data on GPU changed and we're in strategy AlwaysKeepSystemRamCopy. More...
 
void _transitionTo (GpuResidency::GpuResidency newResidency, uint8 *sysRamCopy, bool autoDeleteSysRamCopy=true)
 This function may be called manually (if user is manually managing a texture) or automatically (e.g. More...
 
void addListener (TextureGpuListener *listener)
 
bool allowsAutoMipmaps () const
 
void copyContentsToMemory (TextureBox src, TextureBox dst, PixelFormatGpu dstFormat, bool automaticResolve=true)
 Writes the current contents of the render target to the memory. More...
 
void copyParametersFrom (TextureGpu *src)
 
virtual ResourceLayout::Layout getCurrentLayout () const
 
ResourceLayout::Layout getDefaultLayout (bool bIgnoreDiscardableFlag=false) const
 
uint32 getDepth () const
 For TypeCube & TypeCubeArray, this value returns 1. More...
 
virtual uint16 getDepthBufferPoolId () const
 
uint32 getDepthOrSlices () const
 
virtual PixelFormatGpu getDesiredDepthBufferFormat () const
 
TextureBox getEmptyBox (uint8 mipLevel)
 
uint32 getHeight () const
 
uint32 getInternalHeight () const
 Real API height accounting for TextureGpu::getOrientationMode. See getInternalWidth. More...
 
uint16 getInternalSliceStart () const
 
TextureTypes::TextureTypes getInternalTextureType () const
 
uint32 getInternalWidth () const
 Real API width accounting for TextureGpu::getOrientationMode If orientation mode is 90° or 270° then getInternalWidth returns the height and getInternalHeight returns the width. More...
 
const vector< TextureGpuListener * >::type & getListeners () const
 
String getNameStr () const override
 Note: This returns the alias name of the texture. More...
 
uint8 getNumMipmaps () const
 
uint32 getNumSlices () const
 For TypeCube this value returns 6. More...
 
virtual OrientationMode getOrientationMode () const
 
PixelFormatGpu getPixelFormat () const
 
virtual bool getPreferDepthTexture () const
 
virtual String getRealResourceNameStr () const
 Returns the real name (e.g. disk in file) of the resource. More...
 
SampleDescription getRequestedSampleDescription () const
 Returns original requested sample description, i.e. the raw input to setSampleDescription. More...
 
virtual String getResourceGroupStr () const
 
SampleDescription getSampleDescription () const
 Returns effective sample description supported by the API. More...
 
String getSettingsDesc () const
 
size_t getSizeBytes () const
 Returns total size in bytes used in GPU by this texture (not by its pool) including mipmaps. More...
 
uint8 getSourceType () const
 This setting is for where the texture is created, e.g. More...
 
TextureGpuManagergetTextureManager () const
 
const TexturePoolgetTexturePool () const
 
uint32 getTexturePoolId () const
 
TextureTypes::TextureTypes getTextureType () const
 
uint32 getWidth () const
 
bool hasAutomaticBatching () const
 
bool hasAutoMipmapAuto () const
 
bool hasEquivalentParameters (TextureGpu *other) const
 
bool hasMsaaExplicitResolves () const
 
bool isDataReady () const
 True if this texture is fully ready to be used for displaying. More...
 
bool isDiscardableContent () const
 
bool isManualTexture () const
 
bool isMetadataReady () const
 It is threadsafe to call this function from main thread. More...
 
virtual bool isMsaaPatternSupported (MsaaPatterns::MsaaPatterns pattern)
 
bool isMultisample () const
 
virtual bool isOpenGLRenderWindow () const
 OpenGL RenderWindows are a bit specific: More...
 
bool isPoolOwner () const
 
bool isReinterpretable () const
 
bool isRenderToTexture () const
 
bool isRenderWindowSpecific () const
 
bool isTexture () const
 
bool isTextureGpu () const override
 
bool isTilerMemoryless () const
 
bool isUav () const
 
void notifyAllListenersTextureChanged (uint32 reason, void *extraData=0)
 
bool prefersLoadingFromFileAsSRGB () const
 
void removeListener (TextureGpuListener *listener)
 
bool requiresTextureFlipping () const
 
void scheduleReupload (Image2 *image=0, bool autoDeleteImage=true, bool bSkipMultiload=false)
 There are times where you want to reload a texture again (e.g. More...
 
void scheduleTransitionTo (GpuResidency::GpuResidency nextResidency, Image2 *image=0, bool autoDeleteImage=true, bool bSkipMultiload=false)
 Same as unsafeScheduleTransitionTo, but first checks if we're already in the residency state we want to go to, or if it has already been scheduled; thus it can be called multiple times. More...
 
void setNumMipmaps (uint8 numMipmaps)
 
virtual void setOrientationMode (OrientationMode orientationMode)
 Sets the given orientation. More...
 
void setPixelFormat (PixelFormatGpu pixelFormat)
 Sets the pixel format. More...
 
void setResolution (uint32 width, uint32 height, uint32 depthOrSlices=1u)
 
void setSampleDescription (SampleDescription desc)
 
void setTexturePoolId (uint32 poolId)
 2D Texture with automatic batching will be merged with other textures into the same pool as one big 2D Array texture behind the scenes. More...
 
virtual bool supportsAsDepthBufferFor (TextureGpu *colourTarget) const
 
virtual void swapBuffers ()
 Only valid for TextureGpu classes. More...
 
void unsafeScheduleTransitionTo (GpuResidency::GpuResidency nextResidency, Image2 *image=0, bool autoDeleteImage=true, bool bSkipMultiload=false)
 Schedules an async transition in residency. More...
 
void waitForData ()
 Blocks main thread until data is ready. More...
 
void waitForMetadata ()
 Blocks main thread until metadata is ready. More...
 
void writeContentsToFile (const String &filename, uint8 minMip, uint8 maxMip, bool automaticResolve=true)
 Writes the current contents of the render target to the named file. More...
 
- Public Member Functions inherited from Ogre::GpuTrackedResource
virtual ~GpuTrackedResource ()
 
- Public Member Functions inherited from Ogre::GpuResource
 GpuResource (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name)
 
virtual ~GpuResource ()
 
void _addPendingResidencyChanges (uint32 value)
 
void _setNextResidencyStatus (GpuResidency::GpuResidency nextResidency)
 
GpuPageOutStrategy::GpuPageOutStrategy getGpuPageOutStrategy () const
 
IdString getName () const
 
GpuResidency::GpuResidency getNextResidencyStatus () const
 When getResidencyStatus() != getNextResidencyStatus(), residency changes happen in the main thread, while some preparation may be happening in the background. More...
 
uint32 getPendingResidencyChanges () const
 Returns the number of pending residency changes. More...
 
GpuResidency::GpuResidency getResidencyStatus () const
 

Additional Inherited Members

- Static Public Attributes inherited from Ogre::TextureGpu
static OrientationMode msDefaultOrientationMode
 PUBLIC VARIABLE. More...
 
static const IdString msFinalTextureBuffer
 
static const IdString msMsaaTextureBuffer
 

Constructor & Destructor Documentation

◆ GL3PlusTextureGpu()

Ogre::GL3PlusTextureGpu::GL3PlusTextureGpu ( GpuPageOutStrategy::GpuPageOutStrategy  pageOutStrategy,
VaoManager vaoManager,
IdString  name,
uint32  textureFlags,
TextureTypes::TextureTypes  initialType,
TextureGpuManager textureManager 
)

◆ ~GL3PlusTextureGpu()

Ogre::GL3PlusTextureGpu::~GL3PlusTextureGpu ( )
override

Member Function Documentation

◆ _autogenerateMipmaps()

void Ogre::GL3PlusTextureGpu::_autogenerateMipmaps ( CopyEncTransitionMode::CopyEncTransitionMode  transitionMode = CopyEncTransitionMode::Auto)
overridevirtual

Tells the API to let the HW autogenerate mipmaps.

Assumes allowsAutoMipmaps() == true and isRenderToTexture() == true

Parameters
transitionModeSee CopyEncTransitionMode::CopyEncTransitionMode

Implements Ogre::TextureGpu.

◆ _isDataReadyImpl()

bool Ogre::GL3PlusTextureGpu::_isDataReadyImpl ( ) const
overridevirtual

For internal use.

Do not call directly.

This function is the same isDataReady except it ignores pending residency changes, which is important when TextureGpuManager needs to know this information but the TextureGpu is transitioning (thus mPendingResidencyChanges is in an inconsistent state)

Implements Ogre::TextureGpu.

Reimplemented in Ogre::GL3PlusTextureGpuWindow.

◆ _notifyTextureSlotChanged()

void Ogre::GL3PlusTextureGpu::_notifyTextureSlotChanged ( const TexturePool newPool,
uint16  slice 
)
overridevirtual

◆ _setToDisplayDummyTexture()

void Ogre::GL3PlusTextureGpu::_setToDisplayDummyTexture ( )
overridevirtual

Implements Ogre::TextureGpu.

Reimplemented in Ogre::GL3PlusTextureGpuWindow.

◆ copyTo()

void Ogre::GL3PlusTextureGpu::copyTo ( TextureGpu dst,
const TextureBox dstBox,
uint8  dstMipLevel,
const TextureBox srcBox,
uint8  srcMipLevel,
bool  keepResolvedTexSynced = true,
CopyEncTransitionMode::CopyEncTransitionMode  srcTransitionMode = CopyEncTransitionMode::Auto,
CopyEncTransitionMode::CopyEncTransitionMode  dstTransitionMode = CopyEncTransitionMode::Auto 
)
overridevirtual
Parameters
dst
dstBox
dstMipLevel
srcBox
srcMipLevel
keepResolvedTexSyncedWhen true, if dst is an MSAA texture and is implicitly resolved (i.e. dst->hasMsaaExplicitResolves() == false); the resolved texture is also kept up to date.

Typically the reason to set this to false is if you plane on rendering more stuff to dst texture and then resolve.

Parameters
srcTransitionModeTransition mode for 'this'
dstTransitionModeTransition mode for 'dst'

Reimplemented from Ogre::TextureGpu.

◆ getCustomAttribute()

void Ogre::GL3PlusTextureGpu::getCustomAttribute ( IdString  name,
void *  pData 
)
overridevirtual

◆ getDisplayTextureName()

GLuint Ogre::GL3PlusTextureGpu::getDisplayTextureName ( ) const
inline

Returns the GLuid of the texture that is being displayed.

While the texture is being loaded (i.e. data is not ready), we will display a dummy white texture. Once notifyDataIsReady, getDisplayTextureName should be the same as getFinalTextureName. In other words, getDisplayTextureName may change its returned value based on the texture's status

◆ getFinalTextureName()

GLuint Ogre::GL3PlusTextureGpu::getFinalTextureName ( ) const
inline

Always returns the internal handle that belongs to this texture.

Note that for TextureFlags::AutomaticBatching textures, this will be the handle of a 2D Array texture pool.

If the texture has MSAA enabled, this returns the handle to the resolve texture, not the MSAA one.

If TextureFlags::MsaaExplicitResolve is set, it returns the handle to the MSAA texture, since there is no resolve texture.

◆ getGlTextureTarget()

GLenum Ogre::GL3PlusTextureGpu::getGlTextureTarget ( ) const
inline

Returns GL_TEXTURE_2D / GL_TEXTURE_2D_ARRAY / etc.

◆ getMsaaFramebufferName()

GLuint Ogre::GL3PlusTextureGpu::getMsaaFramebufferName ( ) const
inline

If MSAA > 1u and TextureFlags::MsaaExplicitResolve is not set, this returns the handle to the temporary MSAA renderbuffer used for rendering, which will later be resolved into the resolve texture.

Otherwise it returns null.

◆ getSubsampleLocations()

void Ogre::GL3PlusTextureGpu::getSubsampleLocations ( vector< Vector2 >::type  locations)
overridevirtual

Get the MSAA subsample locations.

mSampleDescription.pattern must not be MsaaPatterns::Undefined.

Parameters
locationsOutputs an array with the locations for each subsample. Values are in range [-1; 1]

Implements Ogre::TextureGpu.

Reimplemented in Ogre::GL3PlusTextureGpuWindow.

◆ notifyDataIsReady()

void Ogre::GL3PlusTextureGpu::notifyDataIsReady ( )
overridevirtual

Notifies it is safe to use the real data. Everything has been uploaded.

Implements Ogre::TextureGpu.

Reimplemented in Ogre::GL3PlusTextureGpuWindow.

◆ setTextureType()

void Ogre::GL3PlusTextureGpu::setTextureType ( TextureTypes::TextureTypes  textureType)
overridevirtual

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