diff options
Diffstat (limited to 'src/VulkanAndroid.h')
| -rw-r--r-- | src/VulkanAndroid.h | 181 |
1 files changed, 181 insertions, 0 deletions
diff --git a/src/VulkanAndroid.h b/src/VulkanAndroid.h new file mode 100644 index 0000000..372b36e --- /dev/null +++ b/src/VulkanAndroid.h @@ -0,0 +1,181 @@ +/* +* Android Vulkan function pointer prototypes +* +* Copyright (C) 2016 by Sascha Willems - www.saschawillems.de +* +* This code is licensed under the MIT license (MIT) (http://opensource.org/licenses/MIT) +*/ + +#pragma once + +#ifndef VULKANANDROID_H +#define VULKANANDROID_H + +// Vulkan needs to be loaded dynamically on android + +#pragma once + +#ifndef VULKANANDROID_HPP +#define VULKANANDROID_HPP + +#include "vulkan/vulkan.h" + +#if defined(__ANDROID__) + +#include <android/log.h> +#include <android_native_app_glue.h> +#include <android/configuration.h> +#include <memory> + +// Missing from the NDK +namespace std +{ + template<typename T, typename... Args> + std::unique_ptr<T> make_unique(Args&&... args) + { + return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); + } +} + +// Global reference to android application object +extern android_app* androidApp; + +#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "vulkanExample", __VA_ARGS__)) +#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "vulkanExample", __VA_ARGS__)) +#define LOGD(...) ((void)__android_log_print(ANDROID_LOG_DEBUG, "vulkanExample", __VA_ARGS__)) +#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, "vulkanExample", __VA_ARGS__)) + +// Function pointer prototypes +// Not complete, just the functions used in the caps viewer! +extern PFN_vkCreateInstance vkCreateInstance; +extern PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; +extern PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; +extern PFN_vkCreateDevice vkCreateDevice; +extern PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; +extern PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; +extern PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties; +extern PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties; +extern PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; +extern PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures; +extern PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; +extern PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; +extern PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; +extern PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties; +extern PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; +extern PFN_vkCreateShaderModule vkCreateShaderModule; +extern PFN_vkCreateBuffer vkCreateBuffer; +extern PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; +extern PFN_vkMapMemory vkMapMemory; +extern PFN_vkUnmapMemory vkUnmapMemory; +extern PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; +extern PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; +extern PFN_vkBindBufferMemory vkBindBufferMemory; +extern PFN_vkDestroyBuffer vkDestroyBuffer; +extern PFN_vkAllocateMemory vkAllocateMemory; +extern PFN_vkBindImageMemory vkBindImageMemory; +extern PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; +extern PFN_vkCmdCopyBuffer vkCmdCopyBuffer; +extern PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; +extern PFN_vkCmdCopyImage vkCmdCopyImage; +extern PFN_vkCmdBlitImage vkCmdBlitImage; +extern PFN_vkCmdClearAttachments vkCmdClearAttachments; +extern PFN_vkCreateSampler vkCreateSampler; +extern PFN_vkDestroySampler vkDestroySampler; +extern PFN_vkDestroyImage vkDestroyImage; +extern PFN_vkFreeMemory vkFreeMemory; +extern PFN_vkCreateRenderPass vkCreateRenderPass; +extern PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; +extern PFN_vkCmdEndRenderPass vkCmdEndRenderPass; +extern PFN_vkCmdNextSubpass vkCmdNextSubpass; +extern PFN_vkCmdExecuteCommands vkCmdExecuteCommands; +extern PFN_vkCreateImage vkCreateImage; +extern PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; +extern PFN_vkCreateImageView vkCreateImageView; +extern PFN_vkDestroyImageView vkDestroyImageView; +extern PFN_vkCreateSemaphore vkCreateSemaphore; +extern PFN_vkDestroySemaphore vkDestroySemaphore; +extern PFN_vkCreateFence vkCreateFence; +extern PFN_vkDestroyFence vkDestroyFence; +extern PFN_vkWaitForFences vkWaitForFences; +extern PFN_vkResetFences vkResetFences; +extern PFN_vkCreateCommandPool vkCreateCommandPool; +extern PFN_vkDestroyCommandPool vkDestroyCommandPool; +extern PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; +extern PFN_vkBeginCommandBuffer vkBeginCommandBuffer; +extern PFN_vkEndCommandBuffer vkEndCommandBuffer; +extern PFN_vkGetDeviceQueue vkGetDeviceQueue; +extern PFN_vkQueueSubmit vkQueueSubmit; +extern PFN_vkQueueWaitIdle vkQueueWaitIdle; +extern PFN_vkDeviceWaitIdle vkDeviceWaitIdle; +extern PFN_vkCreateFramebuffer vkCreateFramebuffer; +extern PFN_vkCreatePipelineCache vkCreatePipelineCache; +extern PFN_vkCreatePipelineLayout vkCreatePipelineLayout; +extern PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; +extern PFN_vkCreateComputePipelines vkCreateComputePipelines; +extern PFN_vkCreateDescriptorPool vkCreateDescriptorPool; +extern PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; +extern PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; +extern PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; +extern PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; +extern PFN_vkCmdBindPipeline vkCmdBindPipeline; +extern PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; +extern PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; +extern PFN_vkCmdSetViewport vkCmdSetViewport; +extern PFN_vkCmdSetScissor vkCmdSetScissor; +extern PFN_vkCmdSetLineWidth vkCmdSetLineWidth; +extern PFN_vkCmdSetDepthBias vkCmdSetDepthBias; +extern PFN_vkCmdPushConstants vkCmdPushConstants; +extern PFN_vkCmdDrawIndexed vkCmdDrawIndexed; +extern PFN_vkCmdDraw vkCmdDraw; +extern PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; +extern PFN_vkCmdDrawIndirect vkCmdDrawIndirect; +extern PFN_vkCmdDispatch vkCmdDispatch; +extern PFN_vkDestroyPipeline vkDestroyPipeline; +extern PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; +extern PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; +extern PFN_vkDestroyDevice vkDestroyDevice; +extern PFN_vkDestroyInstance vkDestroyInstance; +extern PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; +extern PFN_vkFreeCommandBuffers vkFreeCommandBuffers; +extern PFN_vkDestroyRenderPass vkDestroyRenderPass; +extern PFN_vkDestroyFramebuffer vkDestroyFramebuffer; +extern PFN_vkDestroyShaderModule vkDestroyShaderModule; +extern PFN_vkDestroyPipelineCache vkDestroyPipelineCache; +extern PFN_vkCreateQueryPool vkCreateQueryPool; +extern PFN_vkDestroyQueryPool vkDestroyQueryPool; +extern PFN_vkGetQueryPoolResults vkGetQueryPoolResults; +extern PFN_vkCmdBeginQuery vkCmdBeginQuery; +extern PFN_vkCmdEndQuery vkCmdEndQuery; +extern PFN_vkCmdResetQueryPool vkCmdResetQueryPool; +extern PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; + +extern PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR; +extern PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; + +namespace vks +{ + namespace android + { + /* @brief Touch control thresholds from Android NDK samples */ + const int32_t DOUBLE_TAP_TIMEOUT = 300 * 1000000; + const int32_t TAP_TIMEOUT = 180 * 1000000; + const int32_t DOUBLE_TAP_SLOP = 100; + const int32_t TAP_SLOP = 8; + + /** @brief Density of the device screen (in DPI) */ + extern int32_t screenDensity; + + bool loadVulkanLibrary(); + void loadVulkanFunctions(VkInstance instance); + void freeVulkanLibrary(); + void getDeviceConfig(); + } +} + +#endif + +#endif // VULKANANDROID_HPP + + +#endif // VULKANANDROID_H +
\ No newline at end of file |