115 static constexpr uint32_t resource_pools_count = 5;
167 VkInstance vk_instance_ = VK_NULL_HANDLE;
168 VkPhysicalDevice vk_physical_device_ = VK_NULL_HANDLE;
169 VkDevice vk_device_ = VK_NULL_HANDLE;
170 uint32_t vk_queue_family_ = 0;
171 VkQueue vk_queue_ = VK_NULL_HANDLE;
172 std::mutex *queue_mutex_ =
nullptr;
174 bool is_initialized_ =
false;
183 TaskPool *submission_pool_ =
nullptr;
190 VkSemaphore vk_timeline_semaphore_ = VK_NULL_HANDLE;
213 VmaAllocator mem_allocator_ = VK_NULL_HANDLE;
216 VkPhysicalDeviceProperties vk_physical_device_properties_ = {};
217 VkPhysicalDeviceDriverProperties vk_physical_device_driver_properties_ = {};
218 VkPhysicalDeviceIDProperties vk_physical_device_id_properties_ = {};
219 VkPhysicalDeviceMemoryProperties vk_physical_device_memory_properties_ = {};
220 VkPhysicalDeviceDescriptorBufferPropertiesEXT vk_physical_device_descriptor_buffer_properties_ =
223 VkPhysicalDeviceFeatures vk_physical_device_features_ = {};
224 VkPhysicalDeviceVulkan11Features vk_physical_device_vulkan_11_features_ = {};
225 VkPhysicalDeviceVulkan12Features vk_physical_device_vulkan_12_features_ = {};
235 std::string glsl_vert_patch_;
236 std::string glsl_geom_patch_;
237 std::string glsl_frag_patch_;
238 std::string glsl_comp_patch_;
270 PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32Handle =
nullptr;
286 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR};
292 return device_extensions_[index].extensionName;
297 return vk_physical_device_;
302 return vk_physical_device_properties_;
307 return vk_physical_device_id_properties_;
310 inline const VkPhysicalDeviceDescriptorBufferPropertiesEXT &
313 return vk_physical_device_descriptor_buffer_properties_;
318 return vk_physical_device_features_;
323 return vk_physical_device_vulkan_11_features_;
328 return vk_physical_device_vulkan_12_features_;
343 return vk_queue_family_;
348 return mem_allocator_;
353 return descriptor_set_layouts_;
358 return debugging_tools_;
363 return debugging_tools_;
371 void init(
void *ghost_context);
376 return is_initialized_;
415 bool submit_to_device,
416 bool wait_for_completion,
417 VkPipelineStageFlags wait_dst_stage_mask,
418 VkSemaphore wait_semaphore,
419 VkSemaphore signal_semaphore,
420 VkFence signal_fence);
429 BLI_assert(vk_timeline_semaphore_ != VK_NULL_HANDLE);
431 vkGetSemaphoreCounterValue(vk_device_, vk_timeline_semaphore_, ¤t_timeline);
432 return current_timeline;
461 VKDiscardPool &discard_pool_for_current_thread(
bool thread_safe =
false);
475 void init_physical_device_properties();
476 void init_physical_device_memory_properties();
477 void init_physical_device_features();
478 void init_physical_device_extensions();
479 void init_debug_callbacks();
480 void init_memory_allocator();
481 void init_submission_pool();
482 void deinit_submission_pool();
486 void init_functions();
491 void init_dummy_buffer();
NonCopyable(const NonCopyable &other)=delete
NonMovable(NonMovable &&other)=delete
uint32_t queue_family_get() const
PFN_vkGetDescriptorSetLayoutBindingOffsetEXT vkGetDescriptorSetLayoutBindingOffset
const char * extension_name_get(int index) const
PFN_vkCmdBindDescriptorBuffersEXT vkCmdBindDescriptorBuffers
render_graph::VKResourceStateTracker resources
PFN_vkCmdSetDescriptorBufferOffsetsEXT vkCmdSetDescriptorBufferOffsets
const VkPhysicalDeviceFeatures & physical_device_features_get() const
PFN_vkGetMemoryFdKHR vkGetMemoryFd
PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectName
VmaAllocator mem_allocator_get() const
VKDescriptorSetLayouts & descriptor_set_layouts_get()
VkDevice vk_handle() const
bool supports_extension(const char *extension_name) const
const VKExtensions & extensions_get() const
const VkPhysicalDeviceProperties & physical_device_properties_get() const
const VKSamplers & samplers() const
std::string vendor_name() const
std::string driver_version() const
TimelineValue submission_finished_timeline_get() const
PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessenger
const char * glsl_geometry_patch_get() const
render_graph::VKRenderGraph * render_graph_new()
PFN_vkGetDescriptorEXT vkGetDescriptor
VKDiscardPool orphaned_data
const char * glsl_fragment_patch_get() const
VkExportMemoryAllocateInfoKHR external_memory_info
debug::VKDebuggingTools & debugging_tools_get()
VKThreadData & current_thread_data()
const VkPhysicalDeviceIDProperties & physical_device_id_properties_get() const
eGPUDriverType driver_type() const
PFN_vkGetDescriptorSetLayoutSizeEXT vkGetDescriptorSetLayoutSize
static void submission_runner(TaskPool *__restrict pool, void *task_data)
const debug::VKDebuggingTools & debugging_tools_get() const
void context_register(VKContext &context)
bool is_initialized() const
struct blender::gpu::VKDevice::@357253123303341036353224041006002133032155310370 functions
VkPhysicalDevice physical_device_get() const
const char * glsl_compute_patch_get() const
const VKWorkarounds & workarounds_get() const
PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabel
const char * glsl_vertex_patch_get() const
VkInstance instance_get() const
TimelineValue render_graph_submit(render_graph::VKRenderGraph *render_graph, VKDiscardPool &context_discard_pool, bool submit_to_device, bool wait_for_completion, VkPipelineStageFlags wait_dst_stage_mask, VkSemaphore wait_semaphore, VkSemaphore signal_semaphore, VkFence signal_fence)
PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessenger
void context_unregister(VKContext &context)
const VkPhysicalDeviceVulkan12Features & physical_device_vulkan_12_features_get() const
struct blender::gpu::VKDevice::@042163346115313254005332154330057226242036157146 vma_pools
PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabel
void memory_statistics_get(int *r_total_mem_kb, int *r_free_mem_kb) const
void wait_for_timeline(TimelineValue timeline)
const VkPhysicalDeviceDescriptorBufferPropertiesEXT & physical_device_descriptor_buffer_properties_get() const
PFN_vkCmdBeginRendering vkCmdBeginRendering
const VkPhysicalDeviceVulkan11Features & physical_device_vulkan_11_features_get() const
Span< std::reference_wrapper< VKContext > > contexts_get() const
PFN_vkCmdEndRendering vkCmdEndRendering
eGPUDeviceType device_type() const
VKDiscardPool orphaned_data_render
std::array< VKResourcePool, resource_pools_count > resource_pools
void resource_pool_next()
VKThreadData(VKDevice &device, pthread_t thread_id)
uint32_t resource_pool_index
VKResourcePool & resource_pool_get()
bool dynamic_rendering_unused_attachments
bool fragment_shader_barycentric
bool pageable_device_local_memory
bool dynamic_rendering_local_read
bool shader_output_viewport_index
bool not_aligned_pixel_formats
struct blender::gpu::VKWorkarounds::@144366115005041264305201362101242107317250331264 vertex_formats