OGRE-Next  4.0.0unstable
Object-Oriented Graphics Rendering Engine
Ogre::VulkanTextureGpuWindow Class Referencefinal

#include <OgreVulkanTextureGpuWindow.h>

+ Inheritance diagram for Ogre::VulkanTextureGpuWindow:

Public Member Functions

 VulkanTextureGpuWindow (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, TextureGpuManager *textureManager, VulkanWindowSwapChainBased *window)
 ~VulkanTextureGpuWindow () override
bool _isDataReadyImpl () const override
 For internal use. More...
void _notifyTextureSlotChanged (const TexturePool *newPool, uint16 slice) override
void _setCurrentSwapchain (VkImage image, uint32 swapchainIdx)
void _setToDisplayDummyTexture () override
uint32 getCurrentSwapchainIdx () const
void getCustomAttribute (IdString name, void *pData) override
VkSemaphore getImageAcquiredSemaphore ()
void getSubsampleLocations (vector< Vector2 >::type locations) override
 Get the MSAA subsample locations. More...
VkImage getWindowFinalTextureName (size_t idx) const
size_t getWindowNumSurfaces () const
void notifyDataIsReady () override
 Notifies it is safe to use the real data. Everything has been uploaded. More...
void setTextureType (TextureTypes::TextureTypes textureType) override
void swapBuffers () override
 Only valid for TextureGpu classes. More...
- Public Member Functions inherited from Ogre::VulkanTextureGpuRenderTarget
 VulkanTextureGpuRenderTarget (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, TextureGpuManager *textureManager)
 ~VulkanTextureGpuRenderTarget () override
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::VulkanTextureGpu
 VulkanTextureGpu (GpuPageOutStrategy::GpuPageOutStrategy pageOutStrategy, VaoManager *vaoManager, IdString name, uint32 textureFlags, TextureTypes::TextureTypes initialType, TextureGpuManager *textureManager)
 ~VulkanTextureGpu () override
void _autogenerateMipmaps (CopyEncTransitionMode::CopyEncTransitionMode transitionMode=CopyEncTransitionMode::Auto) override
 Tells the API to let the HW autogenerate mipmaps. More...
VkImageView _createView (PixelFormatGpu pixelFormat, uint8 mipLevel, uint8 numMipmaps, uint16 arraySlice, bool cubemapsAs2DArrays, bool forUav, uint32 numSlices=0u, VkImage imageOverride=0) const
void _setNextLayout (ResourceLayout::Layout layout) override
 Sets the layout the texture should be transitioned to after the next copy operation (once the copy encoder gets closed) More...
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
VkImageView createView () const
VkImageView createView (const DescriptorSetTexture2::TextureSlot &texSlot, bool bUseCache=true) const
VkImageView createView (DescriptorSetUav::TextureSlot texSlot, bool bUseCache=true)
void destroyView (DescriptorSetTexture2::TextureSlot texSlot, VkImageView imageView)
void destroyView (DescriptorSetUav::TextureSlot texSlot, VkImageView imageView)
void destroyView (VkImageView imageView)
ResourceLayout::Layout getCurrentLayout () const override
VkImageView getDefaultDisplaySrv () const
VkImage getDisplayTextureName () const
VkImage getFinalTextureName () const
VkImageSubresourceRange getFullSubresourceRange () const
VkImageMemoryBarrier getImageMemoryBarrier () const
 Returns a fresh VkImageMemoryBarrier filled with common data. More...
VkImageViewType getInternalVulkanTextureViewType () const
VkImage getMsaaFramebufferName () const
VkImageType getVulkanTextureType () const
PixelFormatGpu getWorkaroundedPixelFormat (const PixelFormatGpu pixelFormat) const
- 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...
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)
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...
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 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
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

- Public Attributes inherited from Ogre::VulkanTextureGpu
VkImageLayout mCurrLayout
 The current layout we're in. Including any internal stuff. More...
VkImageLayout mNextLayout
 The layout we're expected to be when rendering or doing compute, rather than when doing internal stuff (e.g. More...
- Static Public Attributes inherited from Ogre::TextureGpu
static OrientationMode msDefaultOrientationMode
static const IdString msFinalTextureBuffer
static const IdString msMsaaTextureBuffer

Constructor & Destructor Documentation

◆ VulkanTextureGpuWindow()

Ogre::VulkanTextureGpuWindow::VulkanTextureGpuWindow ( GpuPageOutStrategy::GpuPageOutStrategy  pageOutStrategy,
VaoManager vaoManager,
IdString  name,
uint32  textureFlags,
TextureTypes::TextureTypes  initialType,
TextureGpuManager textureManager,
VulkanWindowSwapChainBased window 

◆ ~VulkanTextureGpuWindow()

Ogre::VulkanTextureGpuWindow::~VulkanTextureGpuWindow ( )

Member Function Documentation

◆ _isDataReadyImpl()

bool Ogre::VulkanTextureGpuWindow::_isDataReadyImpl ( ) const

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)

Reimplemented from Ogre::VulkanTextureGpu.

◆ _notifyTextureSlotChanged()

void Ogre::VulkanTextureGpuWindow::_notifyTextureSlotChanged ( const TexturePool newPool,
uint16  slice 

Reimplemented from Ogre::VulkanTextureGpu.

◆ _setCurrentSwapchain()

void Ogre::VulkanTextureGpuWindow::_setCurrentSwapchain ( VkImage  image,
uint32  swapchainIdx 

◆ _setToDisplayDummyTexture()

void Ogre::VulkanTextureGpuWindow::_setToDisplayDummyTexture ( )

Reimplemented from Ogre::VulkanTextureGpu.

◆ getCurrentSwapchainIdx()

uint32 Ogre::VulkanTextureGpuWindow::getCurrentSwapchainIdx ( ) const

◆ getCustomAttribute()

void Ogre::VulkanTextureGpuWindow::getCustomAttribute ( IdString  name,
void *  pData 

Reimplemented from Ogre::VulkanTextureGpu.

◆ getImageAcquiredSemaphore()

VkSemaphore Ogre::VulkanTextureGpuWindow::getImageAcquiredSemaphore ( )

◆ getSubsampleLocations()

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

Get the MSAA subsample locations.

mSampleDescription.pattern must not be MsaaPatterns::Undefined.

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

Reimplemented from Ogre::VulkanTextureGpu.

◆ getWindowFinalTextureName()

VkImage Ogre::VulkanTextureGpuWindow::getWindowFinalTextureName ( size_t  idx) const

◆ getWindowNumSurfaces()

size_t Ogre::VulkanTextureGpuWindow::getWindowNumSurfaces ( ) const

◆ notifyDataIsReady()

void Ogre::VulkanTextureGpuWindow::notifyDataIsReady ( )

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

Reimplemented from Ogre::VulkanTextureGpu.

◆ setTextureType()

void Ogre::VulkanTextureGpuWindow::setTextureType ( TextureTypes::TextureTypes  textureType)

Reimplemented from Ogre::VulkanTextureGpu.

◆ swapBuffers()

void Ogre::VulkanTextureGpuWindow::swapBuffers ( )

Only valid for TextureGpu classes.

TODO: This may be moved to a different class.

Reimplemented from Ogre::TextureGpu.

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