Blender V5.0
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 VkPhysicalDeviceMaintenance4Properties & physical_device_maintenance4_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
std::string glsl_vertex_patch_get () const
std::string glsl_geometry_patch_get () const
std::string glsl_fragment_patch_get () const
std::string glsl_compute_patch_get () const
shader::GeneratedSource extensions_define (StringRefNull stage_define) const
Shadervk_backbuffer_blit_sh_get ()
Platform/driver/device information
GPUDeviceType device_type () const
GPUDriverType 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
VKMemoryPools 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 135 of file vk_device.hh.

Member Function Documentation

◆ context_register()

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

Definition at line 477 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 500 of file vk_device.cc.

◆ current_thread_data()

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

Get or create current thread data.

Definition at line 461 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 331 of file vk_device.hh.

◆ debugging_tools_get() [2/2]

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

Definition at line 336 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()

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

◆ driver_type()

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

◆ driver_version()

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

Definition at line 438 of file vk_device.cc.

◆ extension_name_get()

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

Definition at line 259 of file vk_device.hh.

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

◆ extensions_define()

shader::GeneratedSource blender::gpu::VKDevice::extensions_define ( StringRefNull stage_define) const

◆ extensions_get()

◆ glsl_compute_patch_get()

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

Definition at line 336 of file vk_device.cc.

References extensions_define().

◆ glsl_fragment_patch_get()

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

Definition at line 329 of file vk_device.cc.

References extensions_define().

◆ glsl_geometry_patch_get()

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

Definition at line 322 of file vk_device.cc.

References extensions_define().

◆ glsl_vertex_patch_get()

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

Definition at line 315 of file vk_device.cc.

References extensions_define().

◆ init()

◆ instance_get()

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

Definition at line 306 of file vk_device.hh.

◆ is_initialized()

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

Definition at line 349 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 505 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 291 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 264 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 280 of file vk_device.hh.

◆ physical_device_maintenance4_properties_get()

const VkPhysicalDeviceMaintenance4Properties & blender::gpu::VKDevice::physical_device_maintenance4_properties_get ( ) const
inline

Definition at line 275 of file vk_device.hh.

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

◆ 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 296 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 301 of file vk_device.hh.

◆ queue_family_get()

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

Definition at line 316 of file vk_device.hh.

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

◆ reinit()

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

Definition at line 65 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 341 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 402 of file vk_device.hh.

References BLI_assert, BLI_assert_msg, result, UINT64_MAX, and UNUSED_VARS.

Referenced by submission_runner().

◆ submission_runner()

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

Definition at line 129 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(), BLI_THREAD_QUEUE_WORK_PRIORITY_NORMAL, blender::gpu::render_graph::VKCommandBuilder::build_nodes(), blender::Vector< T, InlineBufferCapacity, Allocator >::clear(), CLOG_TRACE, 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 259 of file vk_device.cc.

References STREQ.

◆ vendor_name()

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

◆ vk_backbuffer_blit_sh_get()

Shader * blender::gpu::VKDevice::vk_backbuffer_blit_sh_get ( )
inline

Definition at line 458 of file vk_device.hh.

References GPU_shader_create_from_info_name().

◆ vk_handle()

◆ 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 109 of file vk_device_submission.cc.

References lock.

◆ workarounds_get()

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

Definition at line 367 of file vk_device.hh.

Member Data Documentation

◆ dummy_buffer

VKBuffer blender::gpu::VKDevice::dummy_buffer

Buffer to bind to unbound resource locations.

Definition at line 223 of file vk_device.hh.

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

◆ [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 220 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 237 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 250 of file vk_device.hh.

◆ vkGetDescriptorSetLayoutSize

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

Definition at line 249 of file vk_device.hh.

◆ vkGetMemoryFd

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

◆ vkSetDebugUtilsObjectName

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

Definition at line 236 of file vk_device.hh.

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

◆ vma_pools

VKMemoryPools blender::gpu::VKDevice::vma_pools

Definition at line 257 of file vk_device.hh.

Referenced by blender::gpu::VKBuffer::create(), deinit(), and init().


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