#include <SwapChain.h>
Inherits AZ::RHI::ImagePoolBase.
Classes | |
| struct | InitImageRequest |
Public Member Functions | |
| AZ_CLASS_ALLOCATOR (SwapChain, AZ::SystemAllocator, 0) | |
| AZ_RTTI (SwapChain, "{EB2B3AE5-41C0-4833-ABAD-4D964547029C}", Object) | |
| AZ_RHI_MULTI_DEVICE_OBJECT_GETTER (SwapChain) | |
| ResultCode | Init (int deviceIndex, const SwapChainDescriptor &descriptor) |
| Ptr< DeviceSwapChain > | GetDeviceSwapChain () const |
| void | Present () |
| Presents the swap chain to the display, and rotates the images. | |
| void | SetVerticalSyncInterval (uint32_t verticalSyncInterval) |
| ResultCode | Resize (const SwapChainDimensions &dimensions) |
| uint32_t | GetImageCount () const |
| Returns the number of images in the swap chain. | |
| Image * | GetCurrentImage () const |
| Returns the current image of the swap chain. | |
| Image * | GetImage (uint32_t index) const |
| const AttachmentId & | GetAttachmentId () const |
| Returns the ID used for the SwapChain's attachment. | |
| const RHI::SwapChainDescriptor & | GetDescriptor () const override final |
| Returns the descriptor provided when initializing the swap chain. | |
| bool | IsExclusiveFullScreenPreferred () const |
| Returns True if the swap chain prefers to use exclusive full screen mode. | |
| bool | GetExclusiveFullScreenState () const |
| Returns True if the swap chain prefers exclusive full screen mode and it is currently true, false otherwise. | |
| bool | SetExclusiveFullScreenState (bool fullScreenState) |
| Return True if the swap chain prefers exclusive full screen mode and a transition happened, false otherwise. | |
| void | ProcessRecreation () |
| void | Shutdown () override final |
| Shuts down the pool. This method will shutdown all resources associated with the pool. | |
Public Member Functions inherited from AZ::RHI::ImagePoolBase | |
| AZ_RTTI (ImagePoolBase, "{CAC2167A-D65A-493F-A450-FDE2B1A883B1}", ResourcePool) | |
Public Member Functions inherited from AZ::RHI::ResourcePool | |
| AZ_RTTI (ResourcePool, "{BAE5442C-A312-4133-AE80-1200753A7C3E}", MultiDeviceObject) | |
| template<typename ResourceType > | |
| void | ForEach (AZStd::function< void(ResourceType &)> callback) |
| template<typename ResourceType > | |
| void | ForEach (AZStd::function< void(const ResourceType &)> callback) const |
| uint32_t | GetResourceCount () const |
| Returns the number of resources in the pool. | |
Public Member Functions inherited from AZ::RHI::MultiDeviceObject | |
| AZ_RTTI (MultiDeviceObject, "{17D34F71-944C-4AF5-9823-627474C4C0A6}", Object) | |
| bool | IsInitialized () const |
| Returns whether the device object is initialized. | |
| AZ_FORCE_INLINE bool | IsDeviceSet (int deviceIndex) const |
| MultiDevice::DeviceMask | GetDeviceMask () const |
Public Member Functions inherited from AZ::RHI::Object | |
| AZ_RTTI (Object, "{E43378F1-2331-4173-94B8-990ED20E6003}") | |
| void | SetName (const Name &name) |
| Sets the name of the object. | |
| const Name & | GetName () const |
| Returns the name set on the object by SetName. | |
| uint32_t | use_count () |
| Returns the current use count of the object. | |
Protected Member Functions | |
| void | ShutdownImages () |
| Shutdown and clear all the images. | |
| ResultCode | InitImages () |
| Initialized all the images. | |
| RHI::XRRenderingInterface * | GetXRSystem () const |
| Return the xr system interface. | |
Protected Member Functions inherited from AZ::RHI::ImagePoolBase | |
| ResultCode | InitImage (Image *image, const ImageDescriptor &descriptor, PlatformMethod platformInitResourceMethod) |
Protected Member Functions inherited from AZ::RHI::ResourcePool | |
| ResultCode | Init (MultiDevice::DeviceMask deviceMask, const PlatformMethod &initMethod) |
| ResultCode | InitResource (Resource *resource, const PlatformMethod &initResourceMethod) |
| bool | ValidateIsRegistered (const Resource *resource) const |
| bool | ValidateIsUnregistered (const Resource *resource) const |
| bool | ValidateIsInitialized () const |
| Validates that the resource pool is initialized and ready to service requests. | |
Protected Member Functions inherited from AZ::RHI::MultiDeviceObject | |
| void | Init (MultiDevice::DeviceMask deviceMask) |
| The derived class should call this method to assign the device. | |
| template<typename T > | |
| AZ_FORCE_INLINE void | IterateDevices (T callback) |
| Helper method that will iterate over all selected devices and call the provided callback. | |
| template<typename T , typename U > | |
| AZ_FORCE_INLINE decltype(auto) | IterateObjects (U callback) |
| template<typename T , typename U > | |
| AZ_FORCE_INLINE decltype(auto) | IterateObjects (U callback) const |
| template<typename T > | |
| AZ_FORCE_INLINE Ptr< T > | GetDeviceObject (int deviceIndex) const |
Protected Member Functions inherited from AZ::RHI::Object | |
| void | add_ref () const |
| void | release () const |
Protected Attributes | |
| bool | m_pendingRecreation = false |
| Flag indicating if swapchain recreation is needed at the end of the frame. | |
Protected Attributes inherited from AZ::RHI::MultiDeviceObject | |
| AZStd::unordered_map< int, Ptr< DeviceObject > > | m_deviceObjects |
| A map of all device-specific objects, indexed by the device index. | |
Protected Attributes inherited from AZ::RHI::Object | |
| AZStd::atomic_int | m_useCount = 0 |
Additional Inherited Members | |
Static Public Member Functions inherited from AZ::RHI::MultiDeviceObject | |
| template<typename T > | |
| static AZ_FORCE_INLINE void | IterateDevices (MultiDevice::DeviceMask deviceMask, T callback) |
Protected Types inherited from AZ::RHI::ResourcePool | |
| using | PlatformMethod = AZStd::function< RHI::ResultCode()> |
| //!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!//!// | |
The platform-independent, multi-device swap chain base class. Swap chains contain a "chain" of images which map to a platform-specific window, displayed on a physical monitor. The user is allowed to adjust the swap chain outside of the current FrameScheduler frame. Doing so within a frame scheduler frame results in undefined behavior.
The frame scheduler controls presentation of the swap chain. The user may attach a swap chain to a scope in order to render to the current image.
Although a multi-device resource class, we still enforce single-device behavior, as a DeviceSwapChain is tied to a specific window. This is done by initializing it with a device index, which sets the correspondings bit in the deviceMask. The need for a multi-device class arises from the interoperability within a multi-device context, especially attachments and the FrameGraph.
|
finaloverridevirtual |
Returns the descriptor provided when initializing the swap chain.
Implements AZ::RHI::ResourcePool.
| Image * AZ::RHI::SwapChain::GetImage | ( | uint32_t | index | ) | const |
Returns the image associated with the provided index, where the total number of images is given by GetImageCount().
| ResultCode AZ::RHI::SwapChain::Init | ( | int | deviceIndex, |
| const SwapChainDescriptor & | descriptor | ||
| ) |
Initializes the swap chain, making it ready for attachment. As the DeviceSwapChain uses multi-device resources on just a single device, it is explicitly initialized with just a deviceIndex
| void AZ::RHI::SwapChain::ProcessRecreation | ( | ) |
Recreate the swapchain if it becomes invalid during presenting. This should happen at the end of the frame due to images being used as attachments in the frame graph.
| ResultCode AZ::RHI::SwapChain::Resize | ( | const SwapChainDimensions & | dimensions | ) |
Resizes the display resolution of the swap chain. Ideally, this matches the platform window resolution. Typically, the resize operation will occur in reaction to a platform window size change. Takes effect immediately and results in a GPU pipeline flush.
| void AZ::RHI::SwapChain::SetVerticalSyncInterval | ( | uint32_t | verticalSyncInterval | ) |
Sets the vertical sync interval for the swap chain. 0 - No vsync. N - Sync to every N vertical refresh.
A value of 1 syncs to the refresh rate of the monitor.
|
finaloverridevirtual |
Shuts down the pool. This method will shutdown all resources associated with the pool.
Implements AZ::RHI::ResourcePool.