![]() |
Vulkan SDK for Android 1.1.1
Mali Developer Center
|
The WSI platform is a common platform for all platforms which support the VK_KHRSurface extension. The purpose of this class is to move all common code for WSI into this class and make the platform-specifics as minimal as possible. More...
#include <wsi.hpp>
Public Member Functions | |
| virtual | ~WSIPlatform () |
| Destructor. | |
| virtual Result | initialize () override |
| Initialize the platform. Can be overriden by subclasses as long as they also call this method. More... | |
| virtual void | getCurrentSwapchain (std::vector< VkImage > *images, SwapchainDimensions *swapchain) override |
| Gets the current swapchain. More... | |
| virtual unsigned | getNumSwapchainImages () const override |
| Gets number of swapchain images used. More... | |
| virtual Result | acquireNextImage (unsigned *index) override |
| At start of a frame, acquire the next swapchain image to render into. More... | |
| virtual Result | presentImage (unsigned index) override |
| Presents an image to the swapchain. More... | |
| void | terminate () override |
| Terminates the platform. Normally this would be handled by the destructor, but certain platforms need to be able to terminate before exit() and initialize multiple times. | |
Public Member Functions inherited from MaliSDK::Platform | |
| virtual | ~Platform ()=default |
| Destructor. | |
| Platform (Platform &&)=delete | |
| Disallow copies and moves. | |
| void | operator= (Platform &&)=delete |
| Disallow copies and moves. | |
| Context & | getContext () |
| Gets the context owned by the platform. More... | |
| void | addExternalLayer (const char *pName) |
| Adds an additional layer to be loaded on startup, if it exists. More... | |
| void | setExternalDebugCallback (PFN_vkDebugReportCallbackEXT callback, void *pUserData) |
| Sets an external debug callback handler. The callback will be called if the platform receives debug report events. More... | |
| PFN_vkDebugReportCallbackEXT | getExternalDebugCallback () const |
| Returns the currently set debug callback. More... | |
| void * | getExternalDebugCallbackUserData () const |
| Returns the currently set debug callback. More... | |
| virtual SwapchainDimensions | getPreferredSwapchain ()=0 |
| Gets the preferred swapchain size. Not relevant for all platforms. More... | |
| virtual Result | createWindow (const SwapchainDimensions &swapchain)=0 |
| Creates a window with desired swapchain dimensions. More... | |
| virtual Status | getWindowStatus ()=0 |
| Gets current window status. More... | |
| VkDevice | getDevice () const |
| Gets the current Vulkan device. More... | |
| VkPhysicalDevice | getPhysicalDevice () const |
| Gets the current Vulkan physical device. More... | |
| VkInstance | getInstance () const |
| Gets the current Vulkan instance. More... | |
| VkQueue | getGraphicsQueue () const |
| Gets the current Vulkan graphics queue. More... | |
| unsigned | getGraphicsQueueIndex () const |
| Gets the current Vulkan graphics queue family index. More... | |
| const VkPhysicalDeviceProperties & | getGpuProperties () const |
| Gets the current Vulkan GPU properties. More... | |
| const VkPhysicalDeviceMemoryProperties & | getMemoryProperties () const |
| Gets the current Vulkan GPU memory properties. More... | |
Protected Member Functions | |
| Result | initVulkan (const SwapchainDimensions &swapchain, const std::vector< const char *> &instanceExtensions, const std::vector< const char *> &deviceExtensions) |
| Initializes the Vulkan device. More... | |
| Result | initSwapchain (const SwapchainDimensions &swapchain) |
| Explicitly initializes the swapchain. More... | |
| void | destroySwapchain () |
| Explicit tears down the swapchain. | |
Protected Member Functions inherited from MaliSDK::Platform | |
| Platform ()=default | |
| Protected constructor. Only platform implementations can create this class. | |
| void | addExternalLayers (std::vector< const char *> &activeLayers, const std::vector< VkLayerProperties > &supportedLayers) |
| Helper function to add external layers to a list of active ones. More... | |
Additional Inherited Members | |
Public Types inherited from MaliSDK::Platform | |
| enum | Status { STATUS_RUNNING, STATUS_TEARDOWN } |
| Describes the status of the application lifecycle. More... | |
Static Public Member Functions inherited from MaliSDK::Platform | |
| static Platform & | get () |
| The platform is a singleton. More... | |
Protected Attributes inherited from MaliSDK::Platform | |
| VkInstance | instance = VK_NULL_HANDLE |
| The Vulkan instance. | |
| VkPhysicalDevice | gpu = VK_NULL_HANDLE |
| The Vulkan physical device. | |
| VkDevice | device = VK_NULL_HANDLE |
| The Vulkan device. | |
| VkQueue | queue = VK_NULL_HANDLE |
| The Vulkan device queue. | |
| Context * | pContext = nullptr |
| The Vulkan context. | |
| VkPhysicalDeviceProperties | gpuProperties |
| The Vulkan physical device properties. | |
| VkPhysicalDeviceMemoryProperties | memoryProperties |
| The Vulkan physical device memory properties. | |
| std::vector< VkQueueFamilyProperties > | queueProperties |
| The Vulkan physical device queue properties. | |
| unsigned | graphicsQueueIndex |
| The queue family index where graphics work will be submitted. | |
| std::vector< std::string > | externalLayers |
| List of external layers to load. | |
| PFN_vkDebugReportCallbackEXT | externalDebugCallback = nullptr |
| External debug callback. | |
| void * | pExternalDebugCallbackUserData = nullptr |
| User-data for external debug callback. | |
The WSI platform is a common platform for all platforms which support the VK_KHRSurface extension. The purpose of this class is to move all common code for WSI into this class and make the platform-specifics as minimal as possible.
|
overridevirtual |
At start of a frame, acquire the next swapchain image to render into.
| [out] | index | The acquired index. |
Implements MaliSDK::Platform.
|
overridevirtual |
Gets the current swapchain.
| [out] | images | VkImages which application can render into. |
| [out] | swapchain | The swapchain dimensions currently used. |
Implements MaliSDK::Platform.
|
overridevirtual |
|
overridevirtual |
Initialize the platform. Can be overriden by subclasses as long as they also call this method.
Implements MaliSDK::Platform.
Reimplemented in MaliSDK::WaylandPlatform, and MaliSDK::XCBPlatform.
|
protected |
|
protected |
Initializes the Vulkan device.
| swapchain | The requested swapchain dimensions and size. Can be overridden by WSI. | |
| [out] | instanceExtensions | The required Vulkan instance extensions the platform requires. |
| [out] | deviceExtensions | The required Vulkan device extensions the platform requires. |
|
overridevirtual |
Presents an image to the swapchain.
| index | The swapchain index previously obtained from acquireNextImage. |
Implements MaliSDK::Platform.
Reimplemented in MaliSDK::WaylandPlatform, and MaliSDK::XCBPlatform.