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

#include <OgreD3D11TextureGpu.h>

+ Inheritance diagram for Ogre::D3D11TextureGpuRenderTarget:

Public Member Functions

 D3D11TextureGpuRenderTarget (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, TextureGpuManager *textureManager)
 
void _setDepthBufferDefaults (uint16 depthBufferPoolId, bool preferDepthTexture, PixelFormatGpu desiredDepthBufferFormat) override
 These 3 values are used as defaults for the compositor to use, but they may be explicitly overriden by a RenderPassDescriptor. More...
 
uint16 getDepthBufferPoolId () const override
 
PixelFormatGpu getDesiredDepthBufferFormat () const override
 
OrientationMode getOrientationMode () const override
 
bool getPreferDepthTexture () const override
 
void setOrientationMode (OrientationMode orientationMode) override
 Sets the given orientation. More...
 
- Public Member Functions inherited from Ogre::D3D11TextureGpu
 D3D11TextureGpu (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, TextureGpuManager *textureManager)
 
 ~D3D11TextureGpu () 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
 
ComPtr< ID3D11ShaderResourceView > createSrv () const
 
ComPtr< ID3D11ShaderResourceView > createSrv (const DescriptorSetTexture2::TextureSlot &texSlot) const
 
ComPtr< ID3D11UnorderedAccessView > createUav (const DescriptorSetUav::TextureSlot &texSlot) const
 
void getCustomAttribute (IdString name, void *pData) override
 
ID3D11ShaderResourceView * getDefaultDisplaySrv () const
 
ID3D11Resource * getDisplayTextureName () const
 
ID3D11Resource * getFinalTextureName () const
 
ID3D11Resource * getMsaaFramebufferName () const
 
void getSubsampleLocations (vector< Vector2 >::type locations) override
 Get the MSAA subsample locations. More...
 
bool isMsaaPatternSupported (MsaaPatterns::MsaaPatterns pattern) override
 
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 _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...
 
uint32 getDepthOrSlices () 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...
 
PixelFormatGpu getPixelFormat () 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...
 
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)
 
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

◆ D3D11TextureGpuRenderTarget()

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

Member Function Documentation

◆ _setDepthBufferDefaults()

void Ogre::D3D11TextureGpuRenderTarget::_setDepthBufferDefaults ( uint16  depthBufferPoolId,
bool  preferDepthTexture,
PixelFormatGpu  desiredDepthBufferFormat 
)
overridevirtual

These 3 values are used as defaults for the compositor to use, but they may be explicitly overriden by a RenderPassDescriptor.

Particularly required when passing the textures between nodes as input and output (since only the TextureGpu pointer is passed, and thus this information is lost)

Remarks
Changing these settings won't take immediate effect because they're only used when creating the compositor.
Parameters
depthBufferPoolIdSets the pool ID this RenderTarget should query from. Default value is POOL_DEFAULT. Set to POOL_NO_DEPTH to avoid using a DepthBuffer (or manually controlling it)
preferDepthTextureWhether this RT should be attached to a depth texture, or a regular depth buffer. On older GPUs, preferring depth textures may result in certain depth precisions to not be available (or use integer precision instead of floating point, etc). True to use depth textures. False otherwise (default).
desiredDepthBufferFormatOgre will try to honour this request, but if it's not supported, you may get lower precision. All formats will try to fallback to PF_D24_UNORM_S8_UINT if not supported. Must be one of the following: PFG_D24_UNORM_S8_UINT PFG_D16_UNORM PFG_D32_FLOAT PFG_D32_FLOAT_X24_S8_UINT

Reimplemented from Ogre::TextureGpu.

◆ getDepthBufferPoolId()

uint16 Ogre::D3D11TextureGpuRenderTarget::getDepthBufferPoolId ( ) const
overridevirtual

Reimplemented from Ogre::TextureGpu.

◆ getDesiredDepthBufferFormat()

PixelFormatGpu Ogre::D3D11TextureGpuRenderTarget::getDesiredDepthBufferFormat ( ) const
overridevirtual

Reimplemented from Ogre::TextureGpu.

◆ getOrientationMode()

OrientationMode Ogre::D3D11TextureGpuRenderTarget::getOrientationMode ( ) const
overridevirtual

Reimplemented from Ogre::TextureGpu.

◆ getPreferDepthTexture()

bool Ogre::D3D11TextureGpuRenderTarget::getPreferDepthTexture ( ) const
overridevirtual

Reimplemented from Ogre::TextureGpu.

◆ setOrientationMode()

void Ogre::D3D11TextureGpuRenderTarget::setOrientationMode ( OrientationMode  orientationMode)
overridevirtual

Sets the given orientation.

'this' must be a RenderTexture If Ogre wasn't build with OGRE_CONFIG_ENABLE_VIEWPORT_ORIENTATIONMODE, calls to this function will not stick (i.e. getOrientationMode always returns the same value)

See also
TextureGpu::msDefaultOrientationMode
TextureGpu::getInternalWidth
TextureGpu::getInternalHeight
Remarks
Must be OnStorage.

If OrientationMode == OR_DEGREE_90 or OR_DEGREE_270, the internal resolution if flipped. i.e. swap( width, height ). This is important if you need to perform copyTo operations or AsyncTextureTickets

This setting has only been tested with Vulkan and is likely to malfunction with the other APIs if set to anything other than OR_DEGREE_0

Reimplemented from Ogre::TextureGpu.


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