![]() |
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. | |
![]() | |
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. | |
![]() | |
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 | |
![]() | |
enum | Status { STATUS_RUNNING, STATUS_TEARDOWN } |
Describes the status of the application lifecycle. More... | |
![]() | |
static Platform & | get () |
The platform is a singleton. More... | |
![]() | |
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.