![]() |
Vulkan SDK for Android 1.1.1
Mali Developer Center
|
The platform class is to abstract the Vulkan implementation of a particular platform. It is not used directly by applications, but by the mainloop implementation which is OS specific. More...
#include <platform.hpp>
Classes | |
struct | SwapchainDimensions |
Describes the size and format of the swapchain. More... | |
Public Types | |
enum | Status { STATUS_RUNNING, STATUS_TEARDOWN } |
Describes the status of the application lifecycle. More... | |
Public Member Functions | |
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... | |
virtual Result | initialize ()=0 |
Initializes 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 void | getCurrentSwapchain (std::vector< VkImage > *images, SwapchainDimensions *swapchain)=0 |
Gets the current swapchain. More... | |
virtual unsigned | getNumSwapchainImages () const =0 |
Gets number of swapchain images used. More... | |
virtual Result | acquireNextImage (unsigned *index)=0 |
At start of a frame, acquire the next swapchain image to render into. More... | |
virtual Result | presentImage (unsigned index)=0 |
Presents an image to the swapchain. More... | |
virtual Status | getWindowStatus ()=0 |
Gets current window status. More... | |
virtual void | terminate ()=0 |
Terminates the platform. | |
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... | |
Static Public Member Functions | |
static Platform & | get () |
The platform is a singleton. More... | |
Protected Member Functions | |
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... | |
Protected Attributes | |
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 platform class is to abstract the Vulkan implementation of a particular platform. It is not used directly by applications, but by the mainloop implementation which is OS specific.
Definition at line 38 of file platform.hpp.
Describes the status of the application lifecycle.
Enumerator | |
---|---|
STATUS_RUNNING | The application is running. |
STATUS_TEARDOWN | The application should exit as the user has requested it. |
Definition at line 65 of file platform.hpp.
|
pure virtual |
At start of a frame, acquire the next swapchain image to render into.
[out] | index | The acquired index. |
Implemented in MaliSDK::PNGPlatform, and MaliSDK::WSIPlatform.
|
inline |
Adds an additional layer to be loaded on startup, if it exists.
pName | Name of the layer. |
Definition at line 87 of file platform.hpp.
|
inlineprotected |
Helper function to add external layers to a list of active ones.
activeLayers | List of active layers to be used. |
supportedLayers | List of supported layers. |
Definition at line 250 of file platform.hpp.
|
pure virtual |
Creates a window with desired swapchain dimensions.
The swapchain parameters might not necessarily be honored by the platform. Use getCurrentSwapchain to query the dimensions we actually initialized.
Implemented in MaliSDK::WaylandPlatform, MaliSDK::AndroidPlatform, MaliSDK::PNGPlatform, MaliSDK::DisplayPlatform, and MaliSDK::XCBPlatform.
|
static |
|
inline |
Gets the context owned by the platform.
Definition at line 76 of file platform.hpp.
|
pure virtual |
Gets the current swapchain.
[out] | images | VkImages which application can render into. |
[out] | swapchain | The swapchain dimensions currently used. |
Implemented in MaliSDK::PNGPlatform, and MaliSDK::WSIPlatform.
|
inline |
|
inline |
Returns the currently set debug callback.
Definition at line 104 of file platform.hpp.
|
inline |
Returns the currently set debug callback.
Definition at line 111 of file platform.hpp.
|
inline |
Gets the current Vulkan GPU properties.
Definition at line 195 of file platform.hpp.
|
inline |
Gets the current Vulkan graphics queue.
Definition at line 181 of file platform.hpp.
|
inline |
Gets the current Vulkan graphics queue family index.
Definition at line 188 of file platform.hpp.
|
inline |
Gets the current Vulkan instance.
Definition at line 174 of file platform.hpp.
|
inline |
Gets the current Vulkan GPU memory properties.
Definition at line 202 of file platform.hpp.
|
pure virtual |
Gets number of swapchain images used.
Implemented in MaliSDK::PNGPlatform, and MaliSDK::WSIPlatform.
|
inline |
Gets the current Vulkan physical device.
Definition at line 167 of file platform.hpp.
|
pure virtual |
Gets the preferred swapchain size. Not relevant for all platforms.
Implemented in MaliSDK::WaylandPlatform, MaliSDK::AndroidPlatform, MaliSDK::PNGPlatform, MaliSDK::DisplayPlatform, and MaliSDK::XCBPlatform.
|
pure virtual |
Gets current window status.
Implemented in MaliSDK::WaylandPlatform, MaliSDK::PNGPlatform, MaliSDK::AndroidPlatform, MaliSDK::DisplayPlatform, and MaliSDK::XCBPlatform.
|
pure virtual |
Initializes the platform.
Implemented in MaliSDK::WaylandPlatform, MaliSDK::WSIPlatform, MaliSDK::PNGPlatform, and MaliSDK::XCBPlatform.
|
pure virtual |
Presents an image to the swapchain.
index | The swapchain index previously obtained from acquireNextImage. |
Implemented in MaliSDK::WaylandPlatform, MaliSDK::PNGPlatform, MaliSDK::WSIPlatform, and MaliSDK::XCBPlatform.
|
inline |
Sets an external debug callback handler. The callback will be called if the platform receives debug report events.
callback | The callback, may be nullptr to disable callback. |
pUserData | User data, may be nullptr. |
Definition at line 96 of file platform.hpp.