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

#include <vk_context.hh>

Inherits blender::gpu::Context, and blender::NonCopyable.

Public Member Functions

const render_graph::VKRenderGraphrender_graph () const
render_graph::VKRenderGraphrender_graph ()
 VKContext (void *ghost_window, void *ghost_context)
virtual ~VKContext ()
void activate () override
void deactivate () override
void begin_frame () override
void end_frame () override
void flush () override
TimelineValue flush_render_graph (RenderGraphFlushFlags flags, VkPipelineStageFlags wait_dst_stage_mask=VK_PIPELINE_STAGE_NONE, VkSemaphore wait_semaphore=VK_NULL_HANDLE, VkSemaphore signal_semaphore=VK_NULL_HANDLE, VkFence signal_fence=VK_NULL_HANDLE)
void finish () override
void memory_statistics_get (int *r_total_mem_kb, int *r_free_mem_kb) override
void debug_group_begin (const char *, int) override
void debug_group_end () override
bool debug_capture_begin (const char *title) override
void debug_capture_end () override
void * debug_capture_scope_create (const char *name) override
bool debug_capture_scope_begin (void *scope) override
void debug_capture_scope_end (void *scope) override
void sync_backbuffer ()
State manager
void debug_unbind_all_ubo () override
void debug_unbind_all_ssbo () override
VKDescriptorPoolsdescriptor_pools_get ()
VKDescriptorSetTrackerdescriptor_set_get ()
VKStateManagerstate_manager_get () const
Frame-buffer
bool has_active_framebuffer () const
void activate_framebuffer (VKFrameBuffer &framebuffer)
void deactivate_framebuffer ()
VKFrameBufferactive_framebuffer_get () const
void rendering_end ()
Public Member Functions inherited from blender::gpu::Context
 Context ()
virtual ~Context ()
bool is_active_on_thread ()
VertBufdummy_vbo_get ()
Batch * procedural_points_batch_get ()
Batch * procedural_lines_batch_get ()
Batch * procedural_triangles_batch_get ()
Batch * procedural_triangle_strips_batch_get ()
void assert_framebuffer_shader_compatibility (Shader *sh)

Static Public Member Functions

static VKContextget ()
Static Public Member Functions inherited from blender::gpu::Context
static Contextget ()

Public Attributes

VKDiscardPool discard_pool
Public Attributes inherited from blender::gpu::Context
Shadershader = nullptr
FrameBufferactive_fb = nullptr
GPUMatrixStatematrix_state = nullptr
StateManagerstate_manager = nullptr
Immediateimm = nullptr
FrameBufferback_left = nullptr
FrameBufferfront_left = nullptr
FrameBufferback_right = nullptr
FrameBufferfront_right = nullptr
DebugStack debug_stack
bool debug_is_capturing = false
int context_id = 0
Vector< StorageBuf * > printf_buf
VertBufdummy_vbo = nullptr
Batch * procedural_points_batch = nullptr
Batch * procedural_lines_batch = nullptr
Batch * procedural_triangles_batch = nullptr
Batch * procedural_triangle_strips_batch = nullptr
TexturePooltexture_pool = nullptr
int shader_builtin_srgb_transform = 0
bool shader_builtin_srgb_is_dirty = false

Friends

class VKDevice

Graphics pipeline

void specialization_constants_set (const shader::SpecializationConstants *constants_state)
std::unique_ptr< VKStreamingBuffer > & get_or_create_streaming_buffer (VKBuffer &buffer, VkDeviceSize min_offset_alignment)
static void swap_buffer_draw_callback (const GHOST_VulkanSwapChainData *data)
static void swap_buffer_acquired_callback ()

OpenXR

static void openxr_acquire_framebuffer_image_callback (GHOST_VulkanOpenXRData *data)
static void openxr_release_framebuffer_image_callback (GHOST_VulkanOpenXRData *data)

Pipeline

render_graph::VKResourceAccessInforeset_and_get_access_info ()
void update_pipeline_data (render_graph::VKPipelineData &r_pipeline_data)
void update_pipeline_data (GPUPrimType primitive, VKVertexAttributeObject &vao, render_graph::VKPipelineDataGraphics &r_pipeline_data)

Additional Inherited Members

Static Public Attributes inherited from blender::gpu::Context
static int context_counter = 0
Protected Member Functions inherited from blender::gpu::Context
void free_resources ()
Protected Attributes inherited from blender::gpu::Context
pthread_t thread_
bool is_active_
void * ghost_window_

Detailed Description

Definition at line 41 of file vk_context.hh.

Constructor & Destructor Documentation

◆ VKContext()

◆ ~VKContext()

Member Function Documentation

◆ activate()

◆ activate_framebuffer()

◆ active_framebuffer_get()

VKFrameBuffer * blender::gpu::VKContext::active_framebuffer_get ( ) const

◆ begin_frame()

void blender::gpu::VKContext::begin_frame ( )
overridevirtual

Implements blender::gpu::Context.

Definition at line 145 of file vk_context.cc.

◆ deactivate()

void blender::gpu::VKContext::deactivate ( )
overridevirtual

◆ deactivate_framebuffer()

◆ debug_capture_begin()

bool blender::gpu::VKContext::debug_capture_begin ( const char * title)
overridevirtual

◆ debug_capture_end()

◆ debug_capture_scope_begin()

bool blender::gpu::VKContext::debug_capture_scope_begin ( void * scope)
overridevirtual

◆ debug_capture_scope_create()

void * blender::gpu::VKContext::debug_capture_scope_create ( const char * name)
overridevirtual

Implements blender::gpu::Context.

Definition at line 127 of file vk_debug.cc.

References name.

◆ debug_capture_scope_end()

void blender::gpu::VKContext::debug_capture_scope_end ( void * scope)
overridevirtual

◆ debug_group_begin()

void blender::gpu::VKContext::debug_group_begin ( const char * name,
int  )
overridevirtual

◆ debug_group_end()

void blender::gpu::VKContext::debug_group_end ( )
overridevirtual

◆ debug_unbind_all_ssbo()

void blender::gpu::VKContext::debug_unbind_all_ssbo ( )
overridevirtual

◆ debug_unbind_all_ubo()

void blender::gpu::VKContext::debug_unbind_all_ubo ( )
overridevirtual

◆ descriptor_pools_get()

VKDescriptorPools & blender::gpu::VKContext::descriptor_pools_get ( )

Definition at line 209 of file vk_context.cc.

◆ descriptor_set_get()

VKDescriptorSetTracker & blender::gpu::VKContext::descriptor_set_get ( )

Definition at line 214 of file vk_context.cc.

Referenced by flush_render_graph().

◆ end_frame()

void blender::gpu::VKContext::end_frame ( )
overridevirtual

Implements blender::gpu::Context.

Definition at line 147 of file vk_context.cc.

◆ finish()

void blender::gpu::VKContext::finish ( )
overridevirtual

Implements blender::gpu::Context.

Definition at line 197 of file vk_context.cc.

◆ flush()

void blender::gpu::VKContext::flush ( )
overridevirtual

Implements blender::gpu::Context.

Definition at line 152 of file vk_context.cc.

References flush_render_graph(), and blender::gpu::RENEW_RENDER_GRAPH.

◆ flush_render_graph()

◆ get()

VKContext * blender::gpu::VKContext::get ( )
inlinestatic

Definition at line 145 of file vk_context.hh.

References blender::gpu::Context::get(), and VKContext().

Referenced by blender::gpu::VKDescriptorPools::allocate(), blender::gpu::VKStorageBuffer::async_flush_to_host(), blender::gpu::VKQueryPool::begin_query(), blender::gpu::VKFrameBuffer::bind(), blender::gpu::VKShader::bind(), blender::gpu::VKStorageBuffer::bind(), blender::gpu::VKUniformBuffer::bind(), blender::gpu::VKIndexBuffer::bind_as_ssbo(), blender::gpu::VKUniformBuffer::bind_as_ssbo(), blender::gpu::VKVertexBuffer::bind_as_ssbo(), blender::gpu::VKVertexBuffer::bind_as_texture(), blender::gpu::VKFrameBuffer::blit_to(), blender::gpu::VKFrameBuffer::clear(), blender::gpu::VKStorageBuffer::clear(), blender::gpu::VKTexture::clear(), blender::gpu::VKTexture::clear_depth_stencil(), blender::gpu::VKUniformBuffer::clear_to_zero(), blender::gpu::VKBackend::compute_dispatch(), blender::gpu::VKBackend::compute_dispatch_indirect(), blender::gpu::VKStorageBuffer::copy_sub(), blender::gpu::VKTexture::copy_to(), blender::gpu::VKDiscardPool::discard_pool_get(), blender::gpu::VKBatch::draw(), blender::gpu::VKImmediate::end(), blender::gpu::VKQueryPool::end_query(), blender::gpu::VKIndexBuffer::ensure_updated(), blender::gpu::VKUniformBuffer::ensure_updated(), blender::gpu::VKTexture::generate_mipmap(), blender::gpu::VKQueryPool::get_occlusion_result(), blender::gpu::VKStateManager::issue_barrier(), blender::gpu::VKBatch::multi_draw_indirect(), openxr_acquire_framebuffer_image_callback(), openxr_release_framebuffer_image_callback(), blender::gpu::VKIndexBuffer::read(), blender::gpu::VKStorageBuffer::read(), blender::gpu::VKVertexBuffer::read(), blender::gpu::VKTexture::read_sub(), blender::gpu::VKBackend::render_end(), blender::gpu::VKFence::signal(), blender::gpu::VKFrameBuffer::subpass_transition_impl(), swap_buffer_acquired_callback(), swap_buffer_draw_callback(), blender::gpu::VKStorageBuffer::unbind(), blender::gpu::VKUniformBuffer::unbind(), blender::gpu::VKStorageBuffer::update(), blender::gpu::VKUniformBuffer::update(), blender::gpu::VKTexture::update_sub(), blender::gpu::VKVertexBuffer::update_sub(), blender::gpu::VKVertexBuffer::upload_data(), blender::gpu::VKShader::VKShader(), and blender::gpu::VKFrameBuffer::~VKFrameBuffer().

◆ get_or_create_streaming_buffer()

std::unique_ptr< VKStreamingBuffer > & blender::gpu::VKContext::get_or_create_streaming_buffer ( VKBuffer & buffer,
VkDeviceSize min_offset_alignment )

Definition at line 473 of file vk_context.cc.

References blender::gpu::VKBuffer::vk_handle().

◆ has_active_framebuffer()

bool blender::gpu::VKContext::has_active_framebuffer ( ) const

Definition at line 258 of file vk_context.cc.

References active_framebuffer_get().

Referenced by activate_framebuffer(), flush_render_graph(), and sync_backbuffer().

◆ memory_statistics_get()

void blender::gpu::VKContext::memory_statistics_get ( int * r_total_mem_kb,
int * r_free_mem_kb )
overridevirtual

◆ openxr_acquire_framebuffer_image_callback()

void blender::gpu::VKContext::openxr_acquire_framebuffer_image_callback ( GHOST_VulkanOpenXRData * data)
static

Definition at line 492 of file vk_context.cc.

References BLI_assert, get(), and VKContext().

Referenced by blender::gpu::VKBackend::context_alloc().

◆ openxr_release_framebuffer_image_callback()

void blender::gpu::VKContext::openxr_release_framebuffer_image_callback ( GHOST_VulkanOpenXRData * data)
static

Definition at line 499 of file vk_context.cc.

References BLI_assert, get(), and VKContext().

Referenced by blender::gpu::VKBackend::context_alloc().

◆ render_graph() [1/2]

render_graph::VKRenderGraph & blender::gpu::VKContext::render_graph ( )
inline

Definition at line 83 of file vk_context.hh.

◆ render_graph() [2/2]

const render_graph::VKRenderGraph & blender::gpu::VKContext::render_graph ( ) const
inline

Definition at line 79 of file vk_context.hh.

Referenced by debug_group_begin(), and debug_group_end().

◆ rendering_end()

void blender::gpu::VKContext::rendering_end ( )

Ensure that the active framebuffer isn't rendering.

Between vkCmdBeginRendering and vkCmdEndRendering the framebuffer is rendering. Dispatch and transfer commands cannot be called between these commands. They can call this method to ensure that the framebuffer is outside these calls.

Definition at line 273 of file vk_context.cc.

References active_framebuffer_get(), and blender::gpu::VKFrameBuffer::rendering_end().

◆ reset_and_get_access_info()

render_graph::VKResourceAccessInfo & blender::gpu::VKContext::reset_and_get_access_info ( )

◆ specialization_constants_set()

void blender::gpu::VKContext::specialization_constants_set ( const shader::SpecializationConstants * constants_state)

Definition at line 466 of file vk_context.cc.

Referenced by blender::gpu::VKShader::bind().

◆ state_manager_get()

VKStateManager & blender::gpu::VKContext::state_manager_get ( ) const

◆ swap_buffer_acquired_callback()

void blender::gpu::VKContext::swap_buffer_acquired_callback ( )
static

Definition at line 370 of file vk_context.cc.

References BLI_assert, get(), and VKContext().

Referenced by blender::gpu::VKBackend::context_alloc().

◆ swap_buffer_draw_callback()

void blender::gpu::VKContext::swap_buffer_draw_callback ( const GHOST_VulkanSwapChainData * data)
static

Definition at line 377 of file vk_context.cc.

References BLI_assert, get(), and VKContext().

Referenced by blender::gpu::VKBackend::context_alloc().

◆ sync_backbuffer()

◆ update_pipeline_data() [1/2]

◆ update_pipeline_data() [2/2]

void blender::gpu::VKContext::update_pipeline_data ( render_graph::VKPipelineData & r_pipeline_data)

Update the give shader data with the current state of the context.

Definition at line 324 of file vk_context.cc.

References blender::gpu::VKShader::ensure_and_get_compute_pipeline(), blender::gpu::Context::shader, blender::gpu::unwrap(), and update_pipeline_data().

Referenced by update_pipeline_data(), and update_pipeline_data().

◆ VKDevice

friend class VKDevice
friend

Definition at line 42 of file vk_context.hh.

References VKDevice.

Referenced by activate(), flush_render_graph(), memory_statistics_get(), VKDevice, and ~VKContext().

Member Data Documentation

◆ discard_pool

VKDiscardPool blender::gpu::VKContext::discard_pool

Definition at line 77 of file vk_context.hh.

Referenced by flush_render_graph().


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