127 LogicalResult createInstance();
128 LogicalResult createDevice();
129 LogicalResult getBestComputeQueue();
130 LogicalResult createMemoryBuffers();
131 LogicalResult createShaderModule();
132 void initDescriptorSetLayoutBindingMap();
133 LogicalResult createDescriptorSetLayout();
134 LogicalResult createPipelineLayout();
135 LogicalResult createComputePipeline();
136 LogicalResult createDescriptorPool();
137 LogicalResult allocateDescriptorSets();
138 LogicalResult setWriteDescriptors();
139 LogicalResult createCommandPool();
140 LogicalResult createQueryPool();
141 LogicalResult createComputeCommandBuffer();
142 LogicalResult submitCommandBuffersToQueue();
145 LogicalResult copyResource(
bool deviceToHost);
154 VkDescriptorType &descriptorType);
159 VkBufferUsageFlagBits &bufferUsage);
161 LogicalResult countDeviceMemorySize();
167 VkInstance instance{VK_NULL_HANDLE};
168 VkPhysicalDevice physicalDevice{VK_NULL_HANDLE};
169 VkDevice device{VK_NULL_HANDLE};
170 VkQueue queue{VK_NULL_HANDLE};
173 std::unordered_map<DescriptorSetIndex, std::vector<VulkanDeviceMemoryBuffer>>
174 deviceMemoryBufferMap;
177 VkShaderModule shaderModule{VK_NULL_HANDLE};
181 std::vector<VkDescriptorSetLayoutBinding>>
182 descriptorSetLayoutBindingMap;
185 std::vector<VkDescriptorSetLayout> descriptorSetLayouts;
186 VkPipelineLayout pipelineLayout{VK_NULL_HANDLE};
189 std::vector<VkDescriptorSet> descriptorSets;
193 std::vector<DescriptorSetInfo> descriptorSetInfoPool;
194 VkDescriptorPool descriptorPool{VK_NULL_HANDLE};
197 VkQueryPool queryPool{VK_NULL_HANDLE};
199 float timestampPeriod{0.f};
202 VkPipeline pipeline{VK_NULL_HANDLE};
203 VkCommandPool commandPool{VK_NULL_HANDLE};
204 std::vector<VkCommandBuffer> commandBuffers;
210 uint32_t queueFamilyIndex{0};
211 VkQueueFamilyProperties queueFamilyProperties{};
212 uint32_t hostMemoryTypeIndex{VK_MAX_MEMORY_TYPES};
213 uint32_t deviceMemoryTypeIndex{VK_MAX_MEMORY_TYPES};
214 VkDeviceSize memorySize{0};
220 NumWorkGroups numWorkGroups;
221 const char *entryPoint{
nullptr};
222 uint8_t *binary{
nullptr};
223 uint32_t binarySize{0};
std::unordered_map< DescriptorSetIndex, std::unordered_map< BindingIndex, VulkanHostMemoryBuffer > > ResourceData
VulkanHostMemoryBuffer mapped into a descriptor set and a binding.