From 9c1e254b6ac3182bf95831ed4a623f28df4fae5b Mon Sep 17 00:00:00 2001 From: saschawillems Date: Mon, 1 Aug 2016 22:01:36 +0200 Subject: [PATCH] Added Android function pointers for indirect draws, lowered object count on Android --- base/vulkanandroid.cpp | 4 ++++ base/vulkanandroid.h | 2 ++ indirectdraw/indirectdraw.cpp | 6 ++++++ 3 files changed, 12 insertions(+) diff --git a/base/vulkanandroid.cpp b/base/vulkanandroid.cpp index 139718a4..72a77475 100644 --- a/base/vulkanandroid.cpp +++ b/base/vulkanandroid.cpp @@ -91,6 +91,8 @@ PFN_vkCmdSetDepthBias vkCmdSetDepthBias; PFN_vkCmdPushConstants vkCmdPushConstants; PFN_vkCmdDrawIndexed vkCmdDrawIndexed; PFN_vkCmdDraw vkCmdDraw; +PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; +PFN_vkCmdDrawIndirect vkCmdDrawIndirect; PFN_vkCmdDispatch vkCmdDispatch; PFN_vkDestroyPipeline vkDestroyPipeline; PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; @@ -238,6 +240,8 @@ void loadVulkanFunctions(VkInstance instance) vkCmdDrawIndexed = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdDrawIndexed")); vkCmdDraw = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdDraw")); + vkCmdDrawIndexedIndirect = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdDrawIndexedIndirect")); + vkCmdDrawIndirect = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdDrawIndirect")); vkCmdDispatch = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkCmdDispatch")); vkDestroyPipeline = reinterpret_cast(vkGetInstanceProcAddr(instance, "vkDestroyPipeline")); diff --git a/base/vulkanandroid.h b/base/vulkanandroid.h index b5e2a706..c9318f6e 100644 --- a/base/vulkanandroid.h +++ b/base/vulkanandroid.h @@ -121,6 +121,8 @@ 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; diff --git a/indirectdraw/indirectdraw.cpp b/indirectdraw/indirectdraw.cpp index a9823886..58366d42 100644 --- a/indirectdraw/indirectdraw.cpp +++ b/indirectdraw/indirectdraw.cpp @@ -41,9 +41,15 @@ #define ENABLE_VALIDATION false // Number of instances per object +#if defined(__ANDROID__) +#define OBJECT_INSTANCE_COUNT 1024 +// Circular range of plant distribution +#define PLANT_RADIUS 20.0f +#else #define OBJECT_INSTANCE_COUNT 2048 // Circular range of plant distribution #define PLANT_RADIUS 25.0f +#endif // Vertex layout for this example std::vector vertexLayout =