Blender V4.5
blender::gpu::VKDevice Class Reference

#include <vk_device.hh>

Inherits blender::NonCopyable.

Public Member Functions

const char * extension_name_get (int index) const
VkPhysicalDevice physical_device_get () const
const VkPhysicalDeviceProperties & physical_device_properties_get () const
const VkPhysicalDeviceIDProperties & physical_device_id_properties_get () const
const VkPhysicalDeviceDescriptorBufferPropertiesEXT & physical_device_descriptor_buffer_properties_get () const
const VkPhysicalDeviceFeatures & physical_device_features_get () const
const VkPhysicalDeviceVulkan11Features & physical_device_vulkan_11_features_get () const
const VkPhysicalDeviceVulkan12Features & physical_device_vulkan_12_features_get () const
VkInstance instance_get () const
VkDevice vk_handle () const
uint32_t queue_family_get () const
VmaAllocator mem_allocator_get () const
VKDescriptorSetLayoutsdescriptor_set_layouts_get ()
debug::VKDebuggingToolsdebugging_tools_get ()
const debug::VKDebuggingToolsdebugging_tools_get () const
const VKSamplerssamplers () const
void init (void *ghost_context)
void reinit ()
void deinit ()
bool is_initialized () const
bool supports_extension (const char *extension_name) const
const VKWorkaroundsworkarounds_get () const
const VKExtensionsextensions_get () const
const char * glsl_vertex_patch_get () const
const char * glsl_geometry_patch_get () const
const char * glsl_fragment_patch_get () const
const char * glsl_compute_patch_get () const
void init_glsl_patch ()
Platform/driver/device information
eGPUDeviceType device_type () const
eGPUDriverType driver_type () const
std::string vendor_name () const
std::string driver_version () const
Public Member Functions inherited from blender::NonCopyable
 NonCopyable (const NonCopyable &other)=delete
NonCopyableoperator= (const NonCopyable &other)=delete
 NonCopyable ()=default
 NonCopyable (NonCopyable &&other)=default
NonCopyableoperator= (NonCopyable &&other)=default

Public Attributes

render_graph::VKResourceStateTracker resources
VKDiscardPool orphaned_data
VKDiscardPool orphaned_data_render
VKPipelinePool pipelines
VKBuffer dummy_buffer
struct { 
   PFN_vkCmdBeginRendering   vkCmdBeginRendering = nullptr 
   PFN_vkCmdEndRendering   vkCmdEndRendering = nullptr 
   PFN_vkCmdBeginDebugUtilsLabelEXT   vkCmdBeginDebugUtilsLabel = nullptr 
   PFN_vkCmdEndDebugUtilsLabelEXT   vkCmdEndDebugUtilsLabel = nullptr 
   PFN_vkSetDebugUtilsObjectNameEXT   vkSetDebugUtilsObjectName = nullptr 
   PFN_vkCreateDebugUtilsMessengerEXT   vkCreateDebugUtilsMessenger = nullptr 
   PFN_vkDestroyDebugUtilsMessengerEXT   vkDestroyDebugUtilsMessenger = nullptr 
   PFN_vkGetMemoryFdKHR   vkGetMemoryFd = nullptr 
   PFN_vkGetDescriptorSetLayoutSizeEXT   vkGetDescriptorSetLayoutSize = nullptr 
   PFN_vkGetDescriptorSetLayoutBindingOffsetEXT   vkGetDescriptorSetLayoutBindingOffset = nullptr 
   PFN_vkGetDescriptorEXT   vkGetDescriptor = nullptr 
   PFN_vkCmdBindDescriptorBuffersEXT   vkCmdBindDescriptorBuffers = nullptr 
   PFN_vkCmdSetDescriptorBufferOffsetsEXT   vkCmdSetDescriptorBufferOffsets = nullptr 
functions
struct { 
   VkExportMemoryAllocateInfoKHR   external_memory_info 
   VmaPool   external_memory = VK_NULL_HANDLE 
vma_pools

Render graph

render_graph::VKRenderGraphrender_graph_new ()
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)
void wait_for_timeline (TimelineValue timeline)
void wait_queue_idle ()
TimelineValue submission_finished_timeline_get () const
static void submission_runner (TaskPool *__restrict pool, void *task_data)

Resource management

VKThreadDatacurrent_thread_data ()
void context_register (VKContext &context)
void context_unregister (VKContext &context)
Span< std::reference_wrapper< VKContext > > contexts_get () const
void memory_statistics_get (int *r_total_mem_kb, int *r_free_mem_kb) const
void debug_print ()
static void debug_print (std::ostream &os, const VKDiscardPool &discard_pool)

Detailed Description

Definition at line 164 of file vk_device.hh.

Member Function Documentation

◆ context_register()

void blender::gpu::VKDevice::context_register ( VKContext & context)

Definition at line 536 of file vk_device.cc.

◆ context_unregister()

void blender::gpu::VKDevice::context_unregister ( VKContext & context)

◆ contexts_get()

Span< std::reference_wrapper< VKContext > > blender::gpu::VKDevice::contexts_get ( ) const

Definition at line 558 of file vk_device.cc.

◆ current_thread_data()

VKThreadData & blender::gpu::VKDevice::current_thread_data ( )

Get or create current thread data.

Definition at line 520 of file vk_device.cc.

References mutex, and resources.

Referenced by blender::gpu::VKContext::activate().

◆ debug_print() [1/2]

void blender::gpu::VKDevice::debug_print ( )

◆ debug_print() [2/2]

void blender::gpu::VKDevice::debug_print ( std::ostream & os,
const VKDiscardPool & discard_pool )
static

◆ debugging_tools_get() [1/2]

debug::VKDebuggingTools & blender::gpu::VKDevice::debugging_tools_get ( )
inline

Definition at line 356 of file vk_device.hh.

◆ debugging_tools_get() [2/2]

const debug::VKDebuggingTools & blender::gpu::VKDevice::debugging_tools_get ( ) const
inline

Definition at line 361 of file vk_device.hh.

◆ deinit()

void blender::gpu::VKDevice::deinit ( )

◆ descriptor_set_layouts_get()

VKDescriptorSetLayouts & blender::gpu::VKDevice::descriptor_set_layouts_get ( )
inline

◆ device_type()

eGPUDeviceType blender::gpu::VKDevice::device_type ( ) const

◆ driver_type()

eGPUDriverType blender::gpu::VKDevice::driver_type ( ) const

◆ driver_version()

std::string blender::gpu::VKDevice::driver_version ( ) const

Definition at line 495 of file vk_device.cc.

◆ extension_name_get()

const char * blender::gpu::VKDevice::extension_name_get ( int index) const
inline

Definition at line 290 of file vk_device.hh.

Referenced by blender::gpu::vk_extension_get().

◆ extensions_get()

◆ glsl_compute_patch_get()

const char * blender::gpu::VKDevice::glsl_compute_patch_get ( ) const

Definition at line 394 of file vk_device.cc.

References BLI_assert.

◆ glsl_fragment_patch_get()

const char * blender::gpu::VKDevice::glsl_fragment_patch_get ( ) const

Definition at line 388 of file vk_device.cc.

References BLI_assert.

◆ glsl_geometry_patch_get()

const char * blender::gpu::VKDevice::glsl_geometry_patch_get ( ) const

Definition at line 382 of file vk_device.cc.

References BLI_assert.

◆ glsl_vertex_patch_get()

const char * blender::gpu::VKDevice::glsl_vertex_patch_get ( ) const

Definition at line 376 of file vk_device.cc.

References BLI_assert.

◆ init()

◆ init_glsl_patch()

void blender::gpu::VKDevice::init_glsl_patch ( )

◆ instance_get()

VkInstance blender::gpu::VKDevice::instance_get ( ) const
inline

Definition at line 331 of file vk_device.hh.

◆ is_initialized()

bool blender::gpu::VKDevice::is_initialized ( ) const
inline

Definition at line 374 of file vk_device.hh.

Referenced by deinit(), and init().

◆ mem_allocator_get()

◆ memory_statistics_get()

void blender::gpu::VKDevice::memory_statistics_get ( int * r_total_mem_kb,
int * r_free_mem_kb ) const

Definition at line 563 of file vk_device.cc.

References mem_allocator_get().

Referenced by debug_print(), and blender::gpu::VKContext::memory_statistics_get().

◆ physical_device_descriptor_buffer_properties_get()

const VkPhysicalDeviceDescriptorBufferPropertiesEXT & blender::gpu::VKDevice::physical_device_descriptor_buffer_properties_get ( ) const
inline

◆ physical_device_features_get()

const VkPhysicalDeviceFeatures & blender::gpu::VKDevice::physical_device_features_get ( ) const
inline

Definition at line 316 of file vk_device.hh.

Referenced by blender::gpu::VKSampler::create().

◆ physical_device_get()

VkPhysicalDevice blender::gpu::VKDevice::physical_device_get ( ) const
inline

Definition at line 295 of file vk_device.hh.

◆ physical_device_id_properties_get()

const VkPhysicalDeviceIDProperties & blender::gpu::VKDevice::physical_device_id_properties_get ( ) const
inline

Definition at line 305 of file vk_device.hh.

◆ physical_device_properties_get()

const VkPhysicalDeviceProperties & blender::gpu::VKDevice::physical_device_properties_get ( ) const
inline

◆ physical_device_vulkan_11_features_get()

const VkPhysicalDeviceVulkan11Features & blender::gpu::VKDevice::physical_device_vulkan_11_features_get ( ) const
inline

Definition at line 321 of file vk_device.hh.

◆ physical_device_vulkan_12_features_get()

const VkPhysicalDeviceVulkan12Features & blender::gpu::VKDevice::physical_device_vulkan_12_features_get ( ) const
inline

Definition at line 326 of file vk_device.hh.

◆ queue_family_get()

uint32_t blender::gpu::VKDevice::queue_family_get ( ) const
inline

Definition at line 341 of file vk_device.hh.

Referenced by blender::gpu::VKBuffer::create().

◆ reinit()

void blender::gpu::VKDevice::reinit ( )

Definition at line 63 of file vk_device.cc.

◆ render_graph_new()

render_graph::VKRenderGraph * blender::gpu::VKDevice::render_graph_new ( )

◆ render_graph_submit()

◆ samplers()

const VKSamplers & blender::gpu::VKDevice::samplers ( ) const
inline

Definition at line 366 of file vk_device.hh.

◆ submission_finished_timeline_get()

TimelineValue blender::gpu::VKDevice::submission_finished_timeline_get ( ) const
inline

Retrieve the last finished submission timeline.

Definition at line 427 of file vk_device.hh.

References BLI_assert.

Referenced by blender::gpu::VKDiscardPool::destroy_discarded_resources(), and submission_runner().

◆ submission_runner()

void blender::gpu::VKDevice::submission_runner ( TaskPool *__restrict pool,
void * task_data )
static

Definition at line 127 of file vk_device_submission.cc.

References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::gpu::TimelineResources< Item >::append_timeline(), blender::assign_if_different(), BLI_assert, BLI_task_pool_current_canceled(), BLI_task_pool_user_data(), BLI_thread_queue_pop_timeout(), BLI_thread_queue_push(), blender::gpu::render_graph::VKCommandBuilder::build_nodes(), blender::Vector< T, InlineBufferCapacity, Allocator >::clear(), CLOG_INFO, blender::Vector< T, InlineBufferCapacity, Allocator >::data(), blender::gpu::VKDiscardPool::destroy_discarded_resources(), blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), blender::gpu::VKRenderGraphWait::is_submitted, blender::gpu::VKRenderGraphWait::is_submitted_condition, blender::gpu::VKRenderGraphWait::is_submitted_mutex, blender::Vector< T, InlineBufferCapacity, Allocator >::last(), lock, blender::gpu::LOG, blender::gpu::render_graph::VKResourceStateTracker::mutex, orphaned_data, blender::Vector< T, InlineBufferCapacity, Allocator >::pop_last(), blender::gpu::render_graph::VKCommandBuilder::record_commands(), blender::gpu::TimelineResources< Item >::remove_old(), blender::gpu::VKRenderGraphSubmitTask::render_graph, blender::Vector< T, InlineBufferCapacity, Allocator >::reserve(), blender::Vector< T, InlineBufferCapacity, Allocator >::resize(), resources, blender::gpu::render_graph::VKScheduler::select_nodes(), blender::gpu::VKRenderGraphSubmitTask::signal_fence, blender::gpu::VKRenderGraphSubmitTask::signal_semaphore, blender::Vector< T, InlineBufferCapacity, Allocator >::size(), submission_finished_timeline_get(), blender::gpu::VKRenderGraphSubmitTask::submit_to_device, blender::gpu::VKRenderGraphSubmitTask::timeline, UINT64_MAX, UNUSED_VARS, blender::gpu::VKRenderGraphSubmitTask::wait_dst_stage_mask, blender::gpu::VKRenderGraphSubmitTask::wait_for_submission, and blender::gpu::VKRenderGraphSubmitTask::wait_semaphore.

◆ supports_extension()

bool blender::gpu::VKDevice::supports_extension ( const char * extension_name) const

Check if a specific extension is supported by the device.

This should be called from vk_backend to set the correct capabilities and workarounds needed for this device.

Definition at line 253 of file vk_device.cc.

References STREQ.

◆ vendor_name()

std::string blender::gpu::VKDevice::vendor_name ( ) const

◆ vk_handle()

VkDevice blender::gpu::VKDevice::vk_handle ( ) const
inline

◆ wait_for_timeline()

void blender::gpu::VKDevice::wait_for_timeline ( TimelineValue timeline)

◆ wait_queue_idle()

void blender::gpu::VKDevice::wait_queue_idle ( )

Definition at line 107 of file vk_device_submission.cc.

References lock.

◆ workarounds_get()

const VKWorkarounds & blender::gpu::VKDevice::workarounds_get ( ) const
inline

Definition at line 392 of file vk_device.hh.

Referenced by blender::gpu::VKTexture::init_internal().

Member Data Documentation

◆ dummy_buffer

VKBuffer blender::gpu::VKDevice::dummy_buffer

Buffer to bind to unbound resource locations.

Definition at line 248 of file vk_device.hh.

Referenced by blender::gpu::VKVertexAttributeObject::bind(), and deinit().

◆ external_memory

VmaPool blender::gpu::VKDevice::external_memory = VK_NULL_HANDLE

Definition at line 287 of file vk_device.hh.

Referenced by blender::gpu::VKBuffer::create().

◆ external_memory_info

VkExportMemoryAllocateInfoKHR blender::gpu::VKDevice::external_memory_info
Initial value:
= {
VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR}

Definition at line 285 of file vk_device.hh.

◆ [struct]

◆ orphaned_data

◆ orphaned_data_render

VKDiscardPool blender::gpu::VKDevice::orphaned_data_render

Discard pool for resources that could still be used during rendering.

Definition at line 245 of file vk_device.hh.

Referenced by debug_print(), deinit(), and blender::gpu::VKDiscardPool::discard_pool_get().

◆ pipelines

◆ resources

◆ vkCmdBeginDebugUtilsLabel

PFN_vkCmdBeginDebugUtilsLabelEXT blender::gpu::VKDevice::vkCmdBeginDebugUtilsLabel = nullptr

◆ vkCmdBeginRendering

PFN_vkCmdBeginRendering blender::gpu::VKDevice::vkCmdBeginRendering = nullptr

◆ vkCmdBindDescriptorBuffers

PFN_vkCmdBindDescriptorBuffersEXT blender::gpu::VKDevice::vkCmdBindDescriptorBuffers = nullptr

◆ vkCmdEndDebugUtilsLabel

PFN_vkCmdEndDebugUtilsLabelEXT blender::gpu::VKDevice::vkCmdEndDebugUtilsLabel = nullptr

◆ vkCmdEndRendering

PFN_vkCmdEndRendering blender::gpu::VKDevice::vkCmdEndRendering = nullptr

◆ vkCmdSetDescriptorBufferOffsets

PFN_vkCmdSetDescriptorBufferOffsetsEXT blender::gpu::VKDevice::vkCmdSetDescriptorBufferOffsets = nullptr

◆ vkCreateDebugUtilsMessenger

PFN_vkCreateDebugUtilsMessengerEXT blender::gpu::VKDevice::vkCreateDebugUtilsMessenger = nullptr

Definition at line 262 of file vk_device.hh.

Referenced by blender::gpu::debug::VKDebuggingTools::init_messenger().

◆ vkDestroyDebugUtilsMessenger

PFN_vkDestroyDebugUtilsMessengerEXT blender::gpu::VKDevice::vkDestroyDebugUtilsMessenger = nullptr

◆ vkGetDescriptor

◆ vkGetDescriptorSetLayoutBindingOffset

PFN_vkGetDescriptorSetLayoutBindingOffsetEXT blender::gpu::VKDevice::vkGetDescriptorSetLayoutBindingOffset = nullptr

Definition at line 275 of file vk_device.hh.

◆ vkGetDescriptorSetLayoutSize

PFN_vkGetDescriptorSetLayoutSizeEXT blender::gpu::VKDevice::vkGetDescriptorSetLayoutSize = nullptr

Definition at line 274 of file vk_device.hh.

◆ vkGetMemoryFd

PFN_vkGetMemoryFdKHR blender::gpu::VKDevice::vkGetMemoryFd = nullptr

◆ vkSetDebugUtilsObjectName

PFN_vkSetDebugUtilsObjectNameEXT blender::gpu::VKDevice::vkSetDebugUtilsObjectName = nullptr

Definition at line 261 of file vk_device.hh.

Referenced by blender::gpu::debug::object_label().

◆ [struct]

struct { ... } blender::gpu::VKDevice::vma_pools

The documentation for this class was generated from the following files: