Blender V5.0
blender::gpu::VKBackend Class Reference

#include <vk_backend.hh>

Inherits blender::gpu::GPUBackend.

Public Member Functions

 VKBackend ()
virtual ~VKBackend ()
void init_resources () override
void delete_resources () override
void samplers_update () override
void compute_dispatch (int groups_x_len, int groups_y_len, int groups_z_len) override
void compute_dispatch_indirect (StorageBuf *indirect_buf) override
Contextcontext_alloc (void *ghost_window, void *ghost_context) override
Batch * batch_alloc () override
Fencefence_alloc () override
FrameBufferframebuffer_alloc (const char *name) override
IndexBufindexbuf_alloc () override
PixelBufferpixelbuf_alloc (size_t size) override
QueryPoolquerypool_alloc () override
Shadershader_alloc (const char *name) override
Texturetexture_alloc (const char *name) override
UniformBufuniformbuf_alloc (size_t size, const char *name) override
StorageBufstoragebuf_alloc (size_t size, GPUUsageType usage, const char *name) override
VertBufvertbuf_alloc () override
void shader_cache_dir_clear_old () override
void render_begin () override
void render_end () override
void render_step (bool) override
bool debug_capture_begin (const char *title)
void debug_capture_end ()
Public Member Functions inherited from blender::gpu::GPUBackend
virtual ~GPUBackend ()=default
ShaderCompilerget_compiler ()

Static Public Member Functions

static bool is_supported ()
static VKBackendget ()
static void platform_init (const VKDevice &device)
static void capabilities_init (VKDevice &device)
Static Public Member Functions inherited from blender::gpu::GPUBackend
static GPUBackendget ()

Public Attributes

VKDevice device

Friends

class VKContext
class VKDescriptorSet
class VKDescriptorSetTracker

Additional Inherited Members

Protected Attributes inherited from blender::gpu::GPUBackend
ShaderCompilercompiler_

Detailed Description

Definition at line 27 of file vk_backend.hh.

Constructor & Destructor Documentation

◆ VKBackend()

blender::gpu::VKBackend::VKBackend ( )
inline

Definition at line 37 of file vk_backend.hh.

References platform_init().

Referenced by get().

◆ ~VKBackend()

virtual blender::gpu::VKBackend::~VKBackend ( )
inlinevirtual

Definition at line 42 of file vk_backend.hh.

Member Function Documentation

◆ batch_alloc()

Batch * blender::gpu::VKBackend::batch_alloc ( )
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 610 of file vk_backend.cc.

References batch_alloc().

Referenced by batch_alloc().

◆ capabilities_init()

void blender::gpu::VKBackend::capabilities_init ( VKDevice & device)
static

◆ compute_dispatch()

◆ compute_dispatch_indirect()

◆ context_alloc()

◆ debug_capture_begin()

bool blender::gpu::VKBackend::debug_capture_begin ( const char * title)

◆ debug_capture_end()

void blender::gpu::VKBackend::debug_capture_end ( )

◆ delete_resources()

void blender::gpu::VKBackend::delete_resources ( )
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 547 of file vk_backend.cc.

References blender::gpu::GPUBackend::compiler_, and delete_resources().

Referenced by delete_resources().

◆ fence_alloc()

Fence * blender::gpu::VKBackend::fence_alloc ( )
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 615 of file vk_backend.cc.

References fence_alloc().

Referenced by fence_alloc().

◆ framebuffer_alloc()

FrameBuffer * blender::gpu::VKBackend::framebuffer_alloc ( const char * name)
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 620 of file vk_backend.cc.

References framebuffer_alloc(), and name.

Referenced by framebuffer_alloc().

◆ get()

VKBackend & blender::gpu::VKBackend::get ( )
inlinestatic

Definition at line 91 of file vk_backend.hh.

References blender::gpu::GPUBackend::get(), and VKBackend().

Referenced by blender::gpu::VKContext::activate(), blender::gpu::VKDescriptorPools::allocate(), blender::gpu::render_graph::VKCommandBufferWrapper::begin_debug_utils_label(), blender::gpu::VKQueryPool::begin_query(), blender::gpu::render_graph::VKCommandBufferWrapper::begin_rendering(), blender::gpu::VKVertexAttributeObject::bind(), blender::gpu::VKDescriptorBufferUpdator::bind_buffer(), blender::gpu::render_graph::VKCommandBufferWrapper::bind_descriptor_buffers(), blender::gpu::VKDescriptorBufferUpdator::bind_image(), blender::gpu::VKDescriptorBufferUpdator::bind_texel_buffer(), blender::gpu::VKBuffer::create(), blender::gpu::VKSampler::create(), blender::gpu::VKContext::debug_capture_begin(), blender::gpu::VKContext::debug_capture_end(), blender::gpu::VKContext::debug_capture_scope_begin(), blender::gpu::VKContext::debug_capture_scope_end(), blender::gpu::VKDescriptorSetLayouts::deinit(), blender::gpu::debug::VKDebuggingTools::destroy_messenger(), blender::gpu::VKDiscardPool::discard_pool_get(), blender::gpu::render_graph::VKCommandBufferWrapper::end_debug_utils_label(), blender::gpu::render_graph::VKCommandBufferWrapper::end_rendering(), blender::gpu::VKShader::ensure_and_get_compute_pipeline(), blender::gpu::VKShader::ensure_and_get_graphics_pipeline(), blender::gpu::VKVertexBuffer::ensure_buffer_view(), blender::gpu::VKTexture::export_memory(), blender::gpu::VKBuffer::export_memory_get(), blender::gpu::VKShader::finalize(), blender::gpu::VKShaderModule::finalize(), blender::gpu::VKBuffer::flush(), blender::gpu::VKContext::flush_render_graph(), blender::gpu::VKShader::fragment_interface_declare(), blender::gpu::VKSampler::free(), blender::gpu::VKPipelinePool::free_data(), blender::gpu::VKPixelBuffer::get_native_handle(), blender::gpu::VKQueryPool::get_occlusion_result(), blender::gpu::VKDescriptorSetLayouts::get_or_create(), blender::gpu::VKPipelinePool::get_or_create_compute_pipeline(), blender::gpu::VKPipelinePool::get_or_create_graphics_pipeline(), blender::gpu::VKPipelinePool::init(), blender::gpu::VKShaderInterface::init(), blender::gpu::debug::VKDebuggingTools::init_messenger(), blender::gpu::VKContext::memory_statistics_get(), blender::gpu::debug::object_label(), blender::gpu::VKBuffer::read_async(), blender::gpu::VKPipelinePool::read_from_disk(), blender::gpu::VKDescriptorPools::recycle(), blender::gpu::VKFrameBuffer::render_area_update(), blender::gpu::VKFrameBuffer::rendering_ensure(), blender::gpu::VKFrameBuffer::rendering_ensure_dynamic_rendering(), samplers_update(), blender::gpu::render_graph::VKCommandBufferWrapper::set_descriptor_buffer_offsets(), blender::gpu::VKFrameBuffer::subpass_transition_impl(), blender::gpu::to_vk_image_usage(), blender::gpu::VKStorageBuffer::update(), blender::gpu::VKDescriptorSetTracker::update_descriptor_set(), blender::gpu::VKContext::update_pipeline_data(), blender::gpu::VKDescriptorSetPoolUpdator::upload_descriptor_sets(), blender::gpu::VKDescriptorSetTracker::upload_descriptor_sets(), blender::gpu::vk_extension_get(), blender::gpu::VKImageView::VKImageView(), blender::gpu::VKFence::wait(), blender::gpu::VKPipelinePool::write_to_disk(), blender::gpu::VKContext::~VKContext(), blender::gpu::VKDescriptorPools::~VKDescriptorPools(), blender::gpu::VKQueryPool::~VKQueryPool(), and blender::gpu::VKShader::~VKShader().

◆ indexbuf_alloc()

IndexBuf * blender::gpu::VKBackend::indexbuf_alloc ( )
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 625 of file vk_backend.cc.

References indexbuf_alloc().

Referenced by indexbuf_alloc().

◆ init_resources()

void blender::gpu::VKBackend::init_resources ( )
overridevirtual

◆ is_supported()

bool blender::gpu::VKBackend::is_supported ( )
static

Does the running platform contain any device that meets the minimum requirements to start the Vulkan backend.

Function is used to validate that a Blender UI can be started. It calls vulkan API commands directly to ensure no parts of Blender needs to be initialized.

Definition at line 216 of file vk_backend.cc.

References BLI_setenv(), CLG_logref_init(), CLOG_DEBUG, CLOG_ERROR, CLOG_WARN, blender::Array< T, InlineBufferCapacity, Allocator >::data(), G, G_DEBUG_GPU, blender::gpu::GPU_vulkan_is_supported_driver(), blender::Vector< T, InlineBufferCapacity, Allocator >::is_empty(), blender::gpu::LOG, and blender::gpu::missing_capabilities_get().

Referenced by gpu_backend_supported().

◆ pixelbuf_alloc()

PixelBuffer * blender::gpu::VKBackend::pixelbuf_alloc ( size_t size)
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 630 of file vk_backend.cc.

References pixelbuf_alloc(), and size().

Referenced by pixelbuf_alloc().

◆ platform_init()

◆ querypool_alloc()

QueryPool * blender::gpu::VKBackend::querypool_alloc ( )
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 635 of file vk_backend.cc.

References querypool_alloc().

Referenced by querypool_alloc().

◆ render_begin()

void blender::gpu::VKBackend::render_begin ( )
overridevirtual

◆ render_end()

void blender::gpu::VKBackend::render_end ( )
overridevirtual

◆ render_step()

void blender::gpu::VKBackend::render_step ( bool force_resource_release)
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 699 of file vk_backend.cc.

References device, lock, and render_step().

Referenced by render_step().

◆ samplers_update()

void blender::gpu::VKBackend::samplers_update ( )
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 552 of file vk_backend.cc.

References device, get(), and samplers_update().

Referenced by samplers_update().

◆ shader_alloc()

Shader * blender::gpu::VKBackend::shader_alloc ( const char * name)
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 640 of file vk_backend.cc.

References name, and shader_alloc().

Referenced by shader_alloc().

◆ shader_cache_dir_clear_old()

void blender::gpu::VKBackend::shader_cache_dir_clear_old ( )
inlineoverridevirtual

◆ storagebuf_alloc()

StorageBuf * blender::gpu::VKBackend::storagebuf_alloc ( size_t size,
GPUUsageType usage,
const char * name )
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 655 of file vk_backend.cc.

References name, size(), and storagebuf_alloc().

Referenced by storagebuf_alloc().

◆ texture_alloc()

Texture * blender::gpu::VKBackend::texture_alloc ( const char * name)
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 645 of file vk_backend.cc.

References name, and texture_alloc().

Referenced by texture_alloc().

◆ uniformbuf_alloc()

UniformBuf * blender::gpu::VKBackend::uniformbuf_alloc ( size_t size,
const char * name )
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 650 of file vk_backend.cc.

References name, size(), and uniformbuf_alloc().

Referenced by uniformbuf_alloc().

◆ vertbuf_alloc()

VertBuf * blender::gpu::VKBackend::vertbuf_alloc ( )
overridevirtual

Implements blender::gpu::GPUBackend.

Definition at line 660 of file vk_backend.cc.

References vertbuf_alloc().

Referenced by vertbuf_alloc().

◆ VKContext

friend class VKContext
friend

Definition at line 105 of file vk_backend.hh.

References VKContext.

Referenced by compute_dispatch(), compute_dispatch_indirect(), context_alloc(), render_end(), and VKContext.

◆ VKDescriptorSet

friend class VKDescriptorSet
friend

Definition at line 106 of file vk_backend.hh.

References VKDescriptorSet.

Referenced by VKDescriptorSet.

◆ VKDescriptorSetTracker

friend class VKDescriptorSetTracker
friend

Definition at line 107 of file vk_backend.hh.

References VKDescriptorSetTracker.

Referenced by VKDescriptorSetTracker.

Member Data Documentation

◆ device

VKDevice blender::gpu::VKBackend::device

Definition at line 35 of file vk_backend.hh.

Referenced by blender::gpu::VKContext::activate(), blender::gpu::VKDescriptorPools::allocate(), blender::gpu::render_graph::VKCommandBufferWrapper::begin_debug_utils_label(), blender::gpu::VKQueryPool::begin_query(), blender::gpu::render_graph::VKCommandBufferWrapper::begin_rendering(), blender::gpu::VKVertexAttributeObject::bind(), blender::gpu::VKDescriptorBufferUpdator::bind_buffer(), blender::gpu::render_graph::VKCommandBufferWrapper::bind_descriptor_buffers(), blender::gpu::VKDescriptorBufferUpdator::bind_image(), blender::gpu::VKDescriptorBufferUpdator::bind_texel_buffer(), capabilities_init(), context_alloc(), blender::gpu::VKBuffer::create(), blender::gpu::VKSampler::create(), debug_capture_begin(), debug_capture_end(), blender::gpu::VKDescriptorSetLayouts::deinit(), blender::gpu::VKDiscardPool::discard_pool_get(), blender::gpu::render_graph::VKCommandBufferWrapper::end_debug_utils_label(), blender::gpu::render_graph::VKCommandBufferWrapper::end_rendering(), blender::gpu::VKVertexBuffer::ensure_buffer_view(), blender::gpu::VKTexture::export_memory(), blender::gpu::VKBuffer::export_memory_get(), blender::gpu::VKShader::finalize(), blender::gpu::VKShaderModule::finalize(), blender::gpu::VKBuffer::flush(), blender::gpu::VKContext::flush_render_graph(), blender::gpu::VKShader::fragment_interface_declare(), blender::gpu::VKSampler::free(), blender::gpu::VKPipelinePool::free_data(), blender::gpu::VKPixelBuffer::get_native_handle(), blender::gpu::VKQueryPool::get_occlusion_result(), blender::gpu::VKDescriptorSetLayouts::get_or_create(), blender::gpu::VKPipelinePool::get_or_create_compute_pipeline(), blender::gpu::VKPipelinePool::get_or_create_graphics_pipeline(), blender::gpu::VKPipelinePool::init(), blender::gpu::VKShaderInterface::init(), blender::gpu::VKContext::memory_statistics_get(), platform_init(), blender::gpu::VKBuffer::read_async(), blender::gpu::VKPipelinePool::read_from_disk(), blender::gpu::VKDescriptorPools::recycle(), blender::gpu::VKFrameBuffer::render_area_update(), render_begin(), render_end(), render_step(), blender::gpu::VKFrameBuffer::rendering_ensure(), blender::gpu::VKFrameBuffer::rendering_ensure_dynamic_rendering(), samplers_update(), blender::gpu::render_graph::VKCommandBufferWrapper::set_descriptor_buffer_offsets(), blender::gpu::VKFrameBuffer::subpass_transition_impl(), blender::gpu::to_vk_image_usage(), blender::gpu::VKStorageBuffer::update(), blender::gpu::VKDescriptorSetTracker::update_descriptor_set(), blender::gpu::VKContext::update_pipeline_data(), blender::gpu::VKDescriptorSetPoolUpdator::upload_descriptor_sets(), blender::gpu::VKDescriptorSetTracker::upload_descriptor_sets(), blender::gpu::vk_extension_get(), blender::gpu::VKImageView::VKImageView(), blender::gpu::VKFence::wait(), blender::gpu::VKPipelinePool::write_to_disk(), blender::gpu::VKContext::~VKContext(), blender::gpu::VKDescriptorPools::~VKDescriptorPools(), blender::gpu::VKQueryPool::~VKQueryPool(), and blender::gpu::VKShader::~VKShader().


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