PeriDyno 1.0.0
Loading...
Searching...
No Matches
VulkanAndroid.h
Go to the documentation of this file.
1/*
2* Android Vulkan function pointer prototypes
3*
4* Copyright (C) 2016 by Sascha Willems - www.saschawillems.de
5*
6* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT)
7*/
8
9#pragma once
10
11#ifndef VULKANANDROID_H
12#define VULKANANDROID_H
13
14// Vulkan needs to be loaded dynamically on android
15
16#pragma once
17
18#ifndef VULKANANDROID_HPP
19#define VULKANANDROID_HPP
20
21#include "vulkan/vulkan.h"
22
23#if defined(__ANDROID__)
24
25#include <android/log.h>
26#include <android_native_app_glue.h>
27#include <android/configuration.h>
28#include <memory>
29#include <string>
30
31// Missing from the NDK
32namespace std
33{
34 template<typename T, typename... Args>
35 std::unique_ptr<T> make_unique(Args&&... args)
36 {
37 return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
38 }
39}
40
41// Global reference to android application object
42extern android_app* androidApp;
43
44#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "vulkanExample", __VA_ARGS__))
45#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "vulkanExample", __VA_ARGS__))
46#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, "vulkanExample", __VA_ARGS__))
47#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, "vulkanExample", __VA_ARGS__))
48
49// Function pointer prototypes
50// Not complete, just the functions used in the caps viewer!
51extern PFN_vkCreateInstance vkCreateInstance;
52extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr;
53extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr;
54extern PFN_vkCreateDevice vkCreateDevice;
55extern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices;
56extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties;
57extern PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2;
58extern PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties;
59extern PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties;
60extern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties;
61extern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures;
62extern PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2;
63extern PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties;
64extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties;
65extern PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties;
66extern PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties;
67extern PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier;
68extern PFN_vkCreateShaderModule vkCreateShaderModule;
69extern PFN_vkCreateBuffer vkCreateBuffer;
70extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements;
71extern PFN_vkMapMemory vkMapMemory;
72extern PFN_vkUnmapMemory vkUnmapMemory;
73extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges;
74extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges;
75extern PFN_vkBindBufferMemory vkBindBufferMemory;
76extern PFN_vkDestroyBuffer vkDestroyBuffer;
77extern PFN_vkAllocateMemory vkAllocateMemory;
78extern PFN_vkBindImageMemory vkBindImageMemory;
79extern PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout;
80extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer;
81extern PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage;
82extern PFN_vkCmdCopyImage vkCmdCopyImage;
83extern PFN_vkCmdBlitImage vkCmdBlitImage;
84extern PFN_vkCmdClearAttachments vkCmdClearAttachments;
85extern PFN_vkCreateSampler vkCreateSampler;
86extern PFN_vkDestroySampler vkDestroySampler;
87extern PFN_vkDestroyImage vkDestroyImage;
88extern PFN_vkFreeMemory vkFreeMemory;
89extern PFN_vkCreateRenderPass vkCreateRenderPass;
90extern PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass;
91extern PFN_vkCmdEndRenderPass vkCmdEndRenderPass;
92extern PFN_vkCmdNextSubpass vkCmdNextSubpass;
93extern PFN_vkCmdExecuteCommands vkCmdExecuteCommands;
94extern PFN_vkCmdClearColorImage vkCmdClearColorImage;
95extern PFN_vkCreateImage vkCreateImage;
96extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements;
97extern PFN_vkCreateImageView vkCreateImageView;
98extern PFN_vkDestroyImageView vkDestroyImageView;
99extern PFN_vkCreateSemaphore vkCreateSemaphore;
100extern PFN_vkDestroySemaphore vkDestroySemaphore;
101extern PFN_vkCreateFence vkCreateFence;
102extern PFN_vkDestroyFence vkDestroyFence;
103extern PFN_vkWaitForFences vkWaitForFences;
104extern PFN_vkResetFences vkResetFences;
105extern PFN_vkResetDescriptorPool vkResetDescriptorPool;
106extern PFN_vkCreateCommandPool vkCreateCommandPool;
107extern PFN_vkDestroyCommandPool vkDestroyCommandPool;
108extern PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers;
109extern PFN_vkBeginCommandBuffer vkBeginCommandBuffer;
110extern PFN_vkEndCommandBuffer vkEndCommandBuffer;
111extern PFN_vkGetDeviceQueue vkGetDeviceQueue;
112extern PFN_vkQueueSubmit vkQueueSubmit;
113extern PFN_vkQueueWaitIdle vkQueueWaitIdle;
114extern PFN_vkDeviceWaitIdle vkDeviceWaitIdle;
115extern PFN_vkCreateFramebuffer vkCreateFramebuffer;
116extern PFN_vkCreatePipelineCache vkCreatePipelineCache;
117extern PFN_vkCreatePipelineLayout vkCreatePipelineLayout;
118extern PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines;
119extern PFN_vkCreateComputePipelines vkCreateComputePipelines;
120extern PFN_vkCreateDescriptorPool vkCreateDescriptorPool;
121extern PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout;
122extern PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets;
123extern PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets;
124extern PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets;
125extern PFN_vkCmdBindPipeline vkCmdBindPipeline;
126extern PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers;
127extern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer;
128extern PFN_vkCmdSetViewport vkCmdSetViewport;
129extern PFN_vkCmdSetScissor vkCmdSetScissor;
130extern PFN_vkCmdSetLineWidth vkCmdSetLineWidth;
131extern PFN_vkCmdSetDepthBias vkCmdSetDepthBias;
132extern PFN_vkCmdPushConstants vkCmdPushConstants;
133extern PFN_vkCmdDrawIndexed vkCmdDrawIndexed;
134extern PFN_vkCmdDraw vkCmdDraw;
135extern PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect;
136extern PFN_vkCmdDrawIndirect vkCmdDrawIndirect;
137extern PFN_vkCmdDispatch vkCmdDispatch;
138extern PFN_vkDestroyPipeline vkDestroyPipeline;
139extern PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout;
140extern PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout;
141extern PFN_vkDestroyDevice vkDestroyDevice;
142extern PFN_vkDestroyInstance vkDestroyInstance;
143extern PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool;
144extern PFN_vkFreeCommandBuffers vkFreeCommandBuffers;
145extern PFN_vkDestroyRenderPass vkDestroyRenderPass;
146extern PFN_vkDestroyFramebuffer vkDestroyFramebuffer;
147extern PFN_vkDestroyShaderModule vkDestroyShaderModule;
148extern PFN_vkDestroyPipelineCache vkDestroyPipelineCache;
149extern PFN_vkCreateQueryPool vkCreateQueryPool;
150extern PFN_vkDestroyQueryPool vkDestroyQueryPool;
151extern PFN_vkGetQueryPoolResults vkGetQueryPoolResults;
152extern PFN_vkCmdBeginQuery vkCmdBeginQuery;
153extern PFN_vkCmdEndQuery vkCmdEndQuery;
154extern PFN_vkCmdResetQueryPool vkCmdResetQueryPool;
155extern PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults;
156
157extern PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR;
158extern PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR;
159
160namespace vks
161{
162 namespace android
163 {
164 /* @brief Touch control thresholds from Android NDK samples */
165 const int32_t DOUBLE_TAP_TIMEOUT = 300 * 1000000;
166 const int32_t TAP_TIMEOUT = 180 * 1000000;
167 const int32_t DOUBLE_TAP_SLOP = 100;
168 const int32_t TAP_SLOP = 8;
169
171 extern int32_t screenDensity;
172
173 bool loadVulkanLibrary();
174 void loadVulkanFunctions(VkInstance instance);
175 void freeVulkanLibrary();
176 void getDeviceConfig();
177 void showAlert(const char* message);
178 }
179}
180
181#endif
182
183#endif // VULKANANDROID_HPP
184
185
186#endif // VULKANANDROID_H
187
vkGetPhysicalDeviceQueueFamilyProperties(physicalDevice, &queueCount, NULL)
#define T(t)
std::unique_ptr< T > make_unique(Args &&... args)