23 bool Initialize(VkPhysicalDevice inPhysicalDevice, PFN_vkGetDeviceProcAddr inVkGetDeviceProcAddr, VkDevice inDevice,
uint32 inComputeQueueIndex,
ComputeSystemResult &outResult);
32 VkDevice GetDevice()
const {
return mDevice; }
35 virtual bool CreateBuffer(VkDeviceSize inSize, VkBufferUsageFlags inUsage, VkMemoryPropertyFlags inProperties,
BufferVK &outBuffer) = 0;
36 virtual void FreeBuffer(
BufferVK &ioBuffer) = 0;
37 virtual void * MapBuffer(
BufferVK &ioBuffer) = 0;
38 virtual void UnmapBuffer(
BufferVK &ioBuffer) = 0;
41 PFN_vkAllocateCommandBuffers mVkAllocateCommandBuffers =
nullptr;
42 PFN_vkAllocateDescriptorSets mVkAllocateDescriptorSets =
nullptr;
43 PFN_vkAllocateMemory mVkAllocateMemory =
nullptr;
44 PFN_vkBeginCommandBuffer mVkBeginCommandBuffer =
nullptr;
45 PFN_vkBindBufferMemory mVkBindBufferMemory =
nullptr;
46 PFN_vkCmdBindDescriptorSets mVkCmdBindDescriptorSets =
nullptr;
47 PFN_vkCmdBindPipeline mVkCmdBindPipeline =
nullptr;
48 PFN_vkCmdCopyBuffer mVkCmdCopyBuffer =
nullptr;
49 PFN_vkCmdDispatch mVkCmdDispatch =
nullptr;
50 PFN_vkCmdPipelineBarrier mVkCmdPipelineBarrier =
nullptr;
51 PFN_vkCreateBuffer mVkCreateBuffer =
nullptr;
52 PFN_vkCreateCommandPool mVkCreateCommandPool =
nullptr;
53 PFN_vkCreateComputePipelines mVkCreateComputePipelines =
nullptr;
54 PFN_vkCreateDescriptorPool mVkCreateDescriptorPool =
nullptr;
55 PFN_vkCreateDescriptorSetLayout mVkCreateDescriptorSetLayout =
nullptr;
56 PFN_vkCreateFence mVkCreateFence =
nullptr;
57 PFN_vkCreatePipelineLayout mVkCreatePipelineLayout =
nullptr;
58 PFN_vkCreateShaderModule mVkCreateShaderModule =
nullptr;
59 PFN_vkDestroyBuffer mVkDestroyBuffer =
nullptr;
60 PFN_vkDestroyCommandPool mVkDestroyCommandPool =
nullptr;
61 PFN_vkDestroyDescriptorPool mVkDestroyDescriptorPool =
nullptr;
62 PFN_vkDestroyDescriptorSetLayout mVkDestroyDescriptorSetLayout =
nullptr;
63 PFN_vkDestroyDevice mVkDestroyDevice =
nullptr;
64 PFN_vkDestroyFence mVkDestroyFence =
nullptr;
65 PFN_vkDestroyPipeline mVkDestroyPipeline =
nullptr;
66 PFN_vkDestroyPipelineLayout mVkDestroyPipelineLayout =
nullptr;
67 PFN_vkDestroyShaderModule mVkDestroyShaderModule =
nullptr;
68 PFN_vkDeviceWaitIdle mVkDeviceWaitIdle =
nullptr;
69 PFN_vkEndCommandBuffer mVkEndCommandBuffer =
nullptr;
70 PFN_vkFreeCommandBuffers mVkFreeCommandBuffers =
nullptr;
71 PFN_vkFreeMemory mVkFreeMemory =
nullptr;
72 PFN_vkGetBufferMemoryRequirements mVkGetBufferMemoryRequirements =
nullptr;
73 PFN_vkGetDeviceQueue mVkGetDeviceQueue =
nullptr;
74 PFN_vkMapMemory mVkMapMemory =
nullptr;
75 PFN_vkQueueSubmit mVkQueueSubmit =
nullptr;
76 PFN_vkResetCommandBuffer mVkResetCommandBuffer =
nullptr;
77 PFN_vkResetDescriptorPool mVkResetDescriptorPool =
nullptr;
78 PFN_vkResetFences mVkResetFences =
nullptr;
79 PFN_vkSetDebugUtilsObjectNameEXT mVkSetDebugUtilsObjectNameEXT =
nullptr;
80 PFN_vkUnmapMemory mVkUnmapMemory =
nullptr;
81 PFN_vkUpdateDescriptorSets mVkUpdateDescriptorSets =
nullptr;
82 PFN_vkWaitForFences mVkWaitForFences =
nullptr;
86 virtual bool InitializeMemory() = 0;
87 virtual void ShutdownMemory() = 0;
89 VkPhysicalDevice mPhysicalDevice = VK_NULL_HANDLE;
90 VkDevice mDevice = VK_NULL_HANDLE;
91 uint32 mComputeQueueIndex = 0;
#define JPH_EXPORT
Definition Core.h:278
std::uint64_t uint64
Definition Core.h:510
unsigned int uint
Definition Core.h:505
#define JPH_NAMESPACE_END
Definition Core.h:428
std::uint32_t uint32
Definition Core.h:508
#define JPH_NAMESPACE_BEGIN
Definition Core.h:422
#define JPH_DECLARE_RTTI_ABSTRACT(linkage, class_name)
Definition RTTI.h:274
Simple wrapper class to manage a Vulkan buffer.
Definition BufferVK.h:34
EType
Type of buffer.
Definition ComputeBuffer.h:24
Interface to run a workload on the GPU.
Definition ComputeSystem.h:16
virtual ComputeQueueResult CreateComputeQueue()=0
Create a queue for executing compute shaders.
virtual ComputeBufferResult CreateComputeBuffer(ComputeBuffer::EType inType, uint64 inSize, uint inStride, const void *inData=nullptr)=0
Create a buffer for use with a compute shader.
virtual ComputeShaderResult CreateComputeShader(const char *inName, uint32 inGroupSizeX, uint32 inGroupSizeY=1, uint32 inGroupSizeZ=1)=0
Compile a compute shader.
Helper class that either contains a valid result or an error.
Definition Result.h:12