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

#include <mtl_context.hh>

Inherits blender::gpu::Context.

Public Member Functions

void debug_unbind_all_ubo () override
void debug_unbind_all_ssbo () override
MTLContextTextureUtilsget_texture_utils ()
MTLContextComputeUtilsget_compute_utils ()
bool get_active ()
bool get_inside_frame ()
uint get_current_frame_index ()
MTLScratchBufferManagerget_scratchbuffer_manager ()
Texture State Management
void texture_bind (gpu::MTLTexture *mtl_texture, uint texture_unit, bool is_image)
void sampler_bind (MTLSamplerState, uint sampler_unit)
void texture_unbind (gpu::MTLTexture *mtl_texture, bool is_image, StateManager *state_manager)
void texture_unbind_all (bool is_image)
void sampler_state_cache_init ()
id< MTLSamplerStateget_sampler_from_state (MTLSamplerState state)
id< MTLSamplerStateget_default_sampler_state ()
Global Context State
void pipeline_state_init ()
void set_viewport (int origin_x, int origin_y, int width, int height)
void set_viewports (int count, const int(&viewports)[GPU_MAX_VIEWPORTS][4])
void set_scissor (int scissor_x, int scissor_y, int scissor_width, int scissor_height)
void set_scissor_enabled (bool scissor_enabled)
Command Encoder and pipeline state

These utilities ensure that all of the globally bound resources and state have been correctly encoded within the current RenderCommandEncoder. This involves managing buffer bindings, texture bindings, depth stencil state and dynamic pipeline state.

We will also trigger compilation of new PSOs where the input state has changed and is required. All of this setup is required in order to perform a valid draw call.

bool ensure_render_pipeline_state (MTLPrimitiveType prim_type)
bool ensure_buffer_bindings (id< MTLRenderCommandEncoder > rec, const MTLShaderInterface *shader_interface, const MTLRenderPipelineStateInstance *pipeline_state_instance)
bool ensure_buffer_bindings (id< MTLComputeCommandEncoder > rec, const MTLShaderInterface *shader_interface, const MTLComputePipelineStateInstance *pipeline_state_instance)
void ensure_texture_bindings (id< MTLRenderCommandEncoder > rec, MTLShaderInterface *shader_interface, const MTLRenderPipelineStateInstance *pipeline_state_instance)
void ensure_texture_bindings (id< MTLComputeCommandEncoder > rec, MTLShaderInterface *shader_interface, const MTLComputePipelineStateInstance *pipeline_state_instance)
void ensure_depth_stencil_state (MTLPrimitiveType prim_type)
Compute dispatch.
const MTLComputePipelineStateInstanceensure_compute_pipeline_state ()
void compute_dispatch (int groups_x_len, int groups_y_len, int groups_z_len)
void compute_dispatch_indirect (StorageBuf *indirect_buf)
Visibility buffer control for MTLQueryPool.
void set_visibility_buffer (gpu::MTLBuffer *buffer)
gpu::MTLBufferget_visibility_buffer () const
bool is_visibility_dirty () const
void clear_visibility_dirty ()
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 MTLContextget ()
static void global_memory_manager_acquire_ref ()
static void global_memory_manager_release_ref ()
static MTLBufferPoolget_global_memory_manager ()
static void latency_resolve_average (int64_t frame_latency_us)
Static Public Member Functions inherited from blender::gpu::Context
static Contextget ()

Public Attributes

MTLContextGlobalShaderPipelineState pipeline_state
id< MTLCommandQueue > queue = nil
id< MTLDevice > device = nil
NSString * label = nil
MTLScratchBufferManager memory_manager
MTLCommandBufferManager main_command_buffer
shader::SpecializationConstants constants_state
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

Static Public Attributes

static std::atomic< int > max_drawables_in_flight = 0
static std::atomic< int64_tavg_drawable_latency_us = 0
static int64_t frame_latency [MTL_FRAME_AVERAGE_COUNT] = {0}
static std::mutex global_memory_manager_reflock
static int global_memory_manager_refcount = 0
static MTLBufferPoolglobal_memory_manager = nullptr
Static Public Attributes inherited from blender::gpu::Context
static int context_counter = 0

Friends

class MTLBackend
class MTLRenderPassState
class MTLComputeState

Debug Groups

Useful for debugging through render-doc. This makes all the API calls grouped into "passes".

void debug_group_begin (const char *name, int index) 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

MTLContext

 MTLContext (void *ghost_window, void *ghost_context)
 ~MTLContext ()
void activate () override
void deactivate () override
void begin_frame () override
void end_frame () override
void flush () override
void finish () override
void memory_statistics_get (int *r_total_mem, int *r_free_mem) override
void framebuffer_bind (MTLFrameBuffer *framebuffer)
void framebuffer_restore ()
id< MTLRenderCommandEncoder > ensure_begin_render_pass ()
MTLFrameBufferget_current_framebuffer ()
MTLFrameBufferget_default_framebuffer ()
void specialization_constants_set (const shader::SpecializationConstants *constants_state)
MTLShaderget_active_shader ()
id< MTLBufferget_null_buffer ()
id< MTLBufferget_null_attribute_buffer ()
gpu::MTLTextureget_dummy_texture (GPUTextureType type, GPUSamplerFormat sampler_format)
void free_dummy_resources ()
static void check_error (const char *info)

Additional Inherited Members

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

MTLContext – Core render loop and state management.

NOTE(Metal): Partial MTLContext stub to provide wrapper functionality for work-in-progress MTL* classes.

Definition at line 696 of file mtl_context.hh.

Constructor & Destructor Documentation

◆ MTLContext()

◆ ~MTLContext()

Member Function Documentation

◆ activate()

void blender::gpu::MTLContext::activate ( )
overridevirtual

◆ begin_frame()

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

◆ check_error()

void blender::gpu::MTLContext::check_error ( const char * info)
static

Definition at line 412 of file mtl_context.mm.

◆ clear_visibility_dirty()

void blender::gpu::MTLContext::clear_visibility_dirty ( )

Definition at line 2354 of file mtl_context.mm.

◆ compute_dispatch()

◆ compute_dispatch_indirect()

◆ deactivate()

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

◆ debug_capture_begin()

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

Implements blender::gpu::Context.

Definition at line 125 of file mtl_debug.mm.

References device, error(), and init().

◆ debug_capture_end()

void blender::gpu::MTLContext::debug_capture_end ( )
overridevirtual

Implements blender::gpu::Context.

Definition at line 142 of file mtl_debug.mm.

◆ debug_capture_scope_begin()

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

Implements blender::gpu::Context.

Definition at line 167 of file mtl_debug.mm.

◆ debug_capture_scope_create()

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

Implements blender::gpu::Context.

Definition at line 152 of file mtl_debug.mm.

References device, and name.

◆ debug_capture_scope_end()

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

Implements blender::gpu::Context.

Definition at line 177 of file mtl_debug.mm.

◆ debug_group_begin()

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

Reimplemented from blender::gpu::Context.

Definition at line 50 of file mtl_debug.mm.

References G, G_DEBUG_GPU, main_command_buffer, and name.

◆ debug_group_end()

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

Reimplemented from blender::gpu::Context.

Definition at line 68 of file mtl_debug.mm.

References CLOG_ERROR, G, G_DEBUG_GPU, i, blender::gpu::debug::LOG, and main_command_buffer.

◆ debug_unbind_all_ssbo()

void blender::gpu::MTLContext::debug_unbind_all_ssbo ( )
inlineoverridevirtual

Implements blender::gpu::Context.

Definition at line 828 of file mtl_context.hh.

◆ debug_unbind_all_ubo()

void blender::gpu::MTLContext::debug_unbind_all_ubo ( )
inlineoverridevirtual

Implements blender::gpu::Context.

Definition at line 827 of file mtl_context.hh.

◆ end_frame()

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

Implements blender::gpu::Context.

Definition at line 399 of file mtl_context.mm.

References BLI_assert, flush(), and get_inside_frame().

Referenced by ~MTLContext().

◆ ensure_begin_render_pass()

◆ ensure_buffer_bindings() [1/2]

◆ ensure_buffer_bindings() [2/2]

bool blender::gpu::MTLContext::ensure_buffer_bindings ( id< MTLRenderCommandEncoder > rec,
const MTLShaderInterface * shader_interface,
const MTLRenderPipelineStateInstance * pipeline_state_instance )

Definition at line 1135 of file mtl_context.mm.

References blender::gpu::MTLRenderPipelineStateInstance::base_storage_buffer_index, blender::gpu::MTLRenderPipelineStateInstance::base_uniform_buffer_index, blender::gpu::MTLRenderPassState::bind_fragment_buffer(), blender::gpu::MTLRenderPassState::bind_fragment_bytes(), blender::gpu::MTLRenderPassState::bind_vertex_buffer(), blender::gpu::MTLRenderPassState::bind_vertex_bytes(), BLI_assert, BLI_assert_msg, blender::gpu::MTLRenderPipelineStateInstance::buffer_bindings_reflection_data_frag, blender::gpu::MTLRenderPipelineStateInstance::buffer_bindings_reflection_data_vert, blender::gpu::MTLShaderBufferBlock::buffer_index, blender::gpu::MTLRenderPassState::cached_fragment_buffer_bindings, blender::gpu::MTLRenderPassState::cached_vertex_buffer_bindings, blender::gpu::FRAGMENT, blender::gpu::MTLShaderInterface::get_name(), blender::gpu::MTLShaderInterface::get_name_at_offset(), get_null_buffer(), blender::gpu::MTLShaderInterface::get_push_constant_block(), blender::gpu::MTLShaderInterface::get_storage_block(), blender::gpu::MTLShaderInterface::get_total_storage_blocks(), blender::gpu::MTLShaderInterface::get_total_uniform_blocks(), blender::gpu::MTLShaderInterface::get_uniform_block(), blender::gpu::BufferBindingCached::is_bytes, blender::gpu::MTLRenderPassState::last_bound_shader_state, length(), blender::gpu::MTLShaderBufferBlock::location, main_command_buffer, MTL_LOG_SSBO_ERROR, MTL_LOG_UBO_ERROR, MTL_MAX_BUFFER_BINDINGS, MTLRenderPassState, blender::gpu::MTLShaderBufferBlock::name_offset, pipeline_state, blender::gpu::MTLBoundShaderState::pso_index_, blender::gpu::MTLRenderPipelineStateInstance::reflection_data_available, blender::gpu::MTLBoundShaderState::set(), blender::gpu::MTLBoundShaderState::shader_, blender::gpu::MTLRenderPipelineStateInstance::shader_pso_index, blender::gpu::MTLShaderBufferBlock::size, blender::gpu::MTLShaderBufferBlock::stage_mask, UNUSED_VARS_NDEBUG, and blender::gpu::VERTEX.

Referenced by compute_dispatch(), compute_dispatch_indirect(), and ensure_render_pipeline_state().

◆ ensure_compute_pipeline_state()

◆ ensure_depth_stencil_state()

void blender::gpu::MTLContext::ensure_depth_stencil_state ( MTLPrimitiveType prim_type)

◆ ensure_render_pipeline_state()

◆ ensure_texture_bindings() [1/2]

void blender::gpu::MTLContext::ensure_texture_bindings ( id< MTLComputeCommandEncoder > rec,
MTLShaderInterface * shader_interface,
const MTLComputePipelineStateInstance * pipeline_state_instance )

Definition at line 1804 of file mtl_context.mm.

References blender::gpu::MTLBufferPool::allocate(), assert, blender::gpu::MTLComputePipelineStateInstance::base_uniform_buffer_index, blender::gpu::MTLStorageBuf::bind(), blender::gpu::MTLComputeState::bind_compute_buffer(), blender::gpu::MTLComputeState::bind_compute_sampler(), blender::gpu::MTLComputeState::bind_compute_texture(), BLI_assert, blender::gpu::MTLShaderTexture::buffer_metadata_uniform_loc, blender::gpu::COMPUTE, blender::gpu::MTLComputePipelineStateInstance::compute, blender::gpu::DEFAULT_SAMPLER_STATE, blender::gpu::MTLShaderInterface::find_argument_encoder(), blender::gpu::MTLBuffer::flush(), blender::gpu::MTLShaderInterface::get_argument_buffer_bind_index(), get_dummy_texture(), get_global_memory_manager(), blender::gpu::MTLShaderInterface::get_max_texture_index(), blender::gpu::MTLBuffer::get_metal_buffer(), blender::gpu::MTLShaderInterface::get_name(), blender::gpu::MTLTexture::get_name(), blender::gpu::MTLShaderInterface::get_name_at_offset(), blender::gpu::MTLTexture::get_storagebuf(), blender::gpu::MTLShaderInterface::get_texture(), blender::gpu::MTLTexture::get_texture_metadata_ptr(), GPU_max_textures(), GPU_TEXTURE_USAGE_ATOMIC, blender::gpu::MTLTexture::has_custom_swizzle(), i, blender::gpu::MTLShaderInterface::insert_argument_encoder(), blender::gpu::MTLShaderTexture::is_texture_sampler, blender::gpu::MTLShaderTexture::location, main_command_buffer, max_uu(), MTL_LOG_ERROR, MTL_MAX_TEXTURE_SLOTS, MTLComputeState, blender::gpu::MTLShaderTexture::name_offset, pipeline_state, blender::gpu::MTLShaderTexture::sampler_format, size(), blender::gpu::MTLShaderTexture::slot_index, blender::gpu::MTLShaderTexture::stage_mask, texture(), blender::gpu::MTLShaderTexture::texture_buffer_ssbo_location, blender::gpu::MTLShaderTexture::type, blender::gpu::Texture::type_, blender::gpu::MTLShader::uniform_int(), UNUSED_VARS_NDEBUG, blender::gpu::Texture::usage_get(), blender::gpu::MTLSamplerBinding::used, blender::gpu::MTLShaderTexture::used, and blender::gpu::MTLShaderInterface::uses_argument_buffer_for_samplers().

◆ ensure_texture_bindings() [2/2]

void blender::gpu::MTLContext::ensure_texture_bindings ( id< MTLRenderCommandEncoder > rec,
MTLShaderInterface * shader_interface,
const MTLRenderPipelineStateInstance * pipeline_state_instance )

Definition at line 1552 of file mtl_context.mm.

References blender::gpu::MTLBufferPool::allocate(), assert, blender::gpu::MTLRenderPipelineStateInstance::base_uniform_buffer_index, blender::gpu::MTLStorageBuf::bind(), blender::gpu::MTLRenderPassState::bind_fragment_buffer(), blender::gpu::MTLRenderPassState::bind_fragment_sampler(), blender::gpu::MTLRenderPassState::bind_fragment_texture(), blender::gpu::MTLRenderPassState::bind_vertex_buffer(), blender::gpu::MTLRenderPassState::bind_vertex_sampler(), blender::gpu::MTLRenderPassState::bind_vertex_texture(), BLI_assert, blender::gpu::MTLShaderTexture::buffer_metadata_uniform_loc, blender::gpu::DEFAULT_SAMPLER_STATE, blender::gpu::MTLShaderInterface::find_argument_encoder(), blender::gpu::MTLBuffer::flush(), blender::gpu::FRAGMENT, blender::gpu::MTLShaderInterface::get_argument_buffer_bind_index(), get_dummy_texture(), get_global_memory_manager(), blender::gpu::MTLShaderInterface::get_max_texture_index(), blender::gpu::MTLBuffer::get_metal_buffer(), blender::gpu::MTLShaderInterface::get_name(), blender::gpu::MTLTexture::get_name(), blender::gpu::MTLShaderInterface::get_name_at_offset(), blender::gpu::MTLTexture::get_storagebuf(), blender::gpu::MTLShaderInterface::get_texture(), blender::gpu::MTLTexture::get_texture_metadata_ptr(), GPU_max_textures(), GPU_TEXTURE_USAGE_ATOMIC, i, blender::gpu::MTLShaderInterface::insert_argument_encoder(), blender::gpu::MTLShaderTexture::is_texture_sampler, blender::gpu::MTLShaderTexture::location, main_command_buffer, max_uu(), MTL_LOG_ERROR, MTL_MAX_TEXTURE_SLOTS, MTLRenderPassState, blender::gpu::MTLShaderTexture::name_offset, pipeline_state, blender::gpu::MTLShaderTexture::sampler_format, size(), blender::gpu::MTLShaderTexture::slot_index, blender::gpu::MTLShaderTexture::stage_mask, texture(), blender::gpu::MTLShaderTexture::texture_buffer_ssbo_location, blender::gpu::MTLShaderTexture::type, blender::gpu::Texture::type_, blender::gpu::MTLShader::uniform_int(), UNUSED_VARS_NDEBUG, blender::gpu::Texture::usage_get(), blender::gpu::MTLSamplerBinding::used, blender::gpu::MTLShaderTexture::used, blender::gpu::MTLShaderInterface::uses_argument_buffer_for_samplers(), blender::gpu::MTLRenderPipelineStateInstance::vert, and blender::gpu::VERTEX.

Referenced by compute_dispatch(), compute_dispatch_indirect(), and ensure_render_pipeline_state().

◆ finish()

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

Implements blender::gpu::Context.

Definition at line 470 of file mtl_context.mm.

References main_command_buffer.

Referenced by ~MTLContext().

◆ flush()

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

◆ framebuffer_bind()

void blender::gpu::MTLContext::framebuffer_bind ( MTLFrameBuffer * framebuffer)

Metal Context Core functions.

Definition at line 482 of file mtl_context.mm.

References blender::gpu::Context::active_fb, and BLI_assert.

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

◆ framebuffer_restore()

void blender::gpu::MTLContext::framebuffer_restore ( )

◆ free_dummy_resources()

void blender::gpu::MTLContext::free_dummy_resources ( )

◆ get()

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

Definition at line 814 of file mtl_context.hh.

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

Referenced by blender::gpu::MTLFrameBuffer::apply_state(), blender::gpu::MTLStorageBuf::async_flush_to_host(), blender::gpu::MTLShader::bake_current_pipeline_state(), blender::gpu::MTLFrameBuffer::bake_render_pass_descriptor(), blender::gpu::MTLQueryPool::begin_query(), blender::gpu::MTLBatch::bind(), blender::gpu::MTLFrameBuffer::bind(), blender::gpu::MTLShader::bind(), blender::gpu::MTLStorageBuf::bind(), blender::gpu::MTLUniformBuf::bind(), blender::gpu::MTLVertBuf::bind(), blender::gpu::MTLFrameBuffer::blit(), blender::gpu::MTLFrameBuffer::clear(), blender::gpu::MTLStorageBuf::clear(), blender::gpu::MTLTexture::clear(), blender::gpu::MTLFrameBuffer::clear_attachment(), blender::gpu::MTLBackend::compute_dispatch(), blender::gpu::MTLBackend::compute_dispatch_indirect(), blender::gpu::MTLStorageBuf::copy_sub(), blender::gpu::MTLTexture::copy_to(), blender::gpu::MTLImmediate::end(), blender::gpu::MTLQueryPool::end_query(), blender::gpu::MTLBackend::framebuffer_alloc(), blender::gpu::MTLTexture::generate_mipmap(), blender::gpu::MTLContextComputeUtils::get_buffer_clear_pso(), blender::gpu::MTLPixelBuffer::get_native_handle(), blender::gpu::MTLQueryPool::get_occlusion_result(), blender::gpu::MTLStateManager::image_bind(), blender::gpu::MTLStateManager::image_unbind(), blender::gpu::MTLStateManager::image_unbind_all(), blender::gpu::MTLStorageBuf::init(), blender::gpu::MTLTexture::init_internal(), blender::gpu::MTLStateManager::issue_barrier(), blender::gpu::MTLPixelBuffer::map(), blender::gpu::present(), blender::gpu::MTLIndexBuf::read(), blender::gpu::MTLStorageBuf::read(), blender::gpu::MTLVertBuf::read(), blender::gpu::MTLBackend::shader_alloc(), blender::gpu::MTLFence::signal(), blender::gpu::MTLStateManager::texture_bind(), blender::gpu::MTLStateManager::texture_unbind(), blender::gpu::MTLStateManager::texture_unbind_all(), blender::gpu::MTLStateManager::texture_unpack_row_length_set(), blender::gpu::MTLShader::unbind(), blender::gpu::MTLStorageBuf::update(), blender::gpu::MTLUniformBuf::update(), blender::gpu::MTLIndexBuf::update_sub(), blender::gpu::MTLTexture::update_sub(), blender::gpu::MTLTexture::update_sub(), blender::gpu::MTLVertBuf::update_sub(), blender::gpu::MTLFence::wait(), blender::gpu::MTLShader::warm_cache(), ~MTLContext(), blender::gpu::MTLFrameBuffer::~MTLFrameBuffer(), blender::gpu::MTLStorageBuf::~MTLStorageBuf(), blender::gpu::MTLTexture::~MTLTexture(), and blender::gpu::MTLUniformBuf::~MTLUniformBuf().

◆ get_active()

bool blender::gpu::MTLContext::get_active ( )
inline

Definition at line 938 of file mtl_context.hh.

References blender::gpu::Context::is_active_.

◆ get_active_shader()

MTLShader * blender::gpu::MTLContext::get_active_shader ( )

Definition at line 563 of file mtl_context.mm.

References pipeline_state.

◆ get_compute_utils()

MTLContextComputeUtils & blender::gpu::MTLContext::get_compute_utils ( )
inline

Definition at line 933 of file mtl_context.hh.

Referenced by blender::gpu::MTLStorageBuf::clear(), and ~MTLContext().

◆ get_current_frame_index()

uint blender::gpu::MTLContext::get_current_frame_index ( )
inline

Definition at line 948 of file mtl_context.hh.

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

◆ get_current_framebuffer()

MTLFrameBuffer * blender::gpu::MTLContext::get_current_framebuffer ( )

◆ get_default_framebuffer()

MTLFrameBuffer * blender::gpu::MTLContext::get_default_framebuffer ( )

Definition at line 558 of file mtl_context.mm.

References blender::gpu::Context::back_left.

Referenced by get_current_framebuffer().

◆ get_default_sampler_state()

id< MTLSamplerState > blender::gpu::MTLContext::get_default_sampler_state ( )

◆ get_dummy_texture()

◆ get_global_memory_manager()

◆ get_inside_frame()

◆ get_null_attribute_buffer()

id< MTLBuffer > blender::gpu::MTLContext::get_null_attribute_buffer ( )

Definition at line 592 of file mtl_context.mm.

References BLI_assert, data, device, and options.

Referenced by ensure_render_pipeline_state().

◆ get_null_buffer()

id< MTLBuffer > blender::gpu::MTLContext::get_null_buffer ( )

Definition at line 568 of file mtl_context.mm.

References BLI_assert, device, free(), and options.

Referenced by ensure_buffer_bindings(), and ensure_buffer_bindings().

◆ get_sampler_from_state()

◆ get_scratchbuffer_manager()

MTLScratchBufferManager & blender::gpu::MTLContext::get_scratchbuffer_manager ( )
inline

◆ get_texture_utils()

MTLContextTextureUtils & blender::gpu::MTLContext::get_texture_utils ( )
inline

Definition at line 927 of file mtl_context.hh.

Referenced by MTLContext(), and ~MTLContext().

◆ get_visibility_buffer()

gpu::MTLBuffer * blender::gpu::MTLContext::get_visibility_buffer ( ) const

Definition at line 2349 of file mtl_context.mm.

◆ global_memory_manager_acquire_ref()

void blender::gpu::MTLContext::global_memory_manager_acquire_ref ( )
inlinestatic

◆ global_memory_manager_release_ref()

void blender::gpu::MTLContext::global_memory_manager_release_ref ( )
inlinestatic

◆ is_visibility_dirty()

bool blender::gpu::MTLContext::is_visibility_dirty ( ) const

Definition at line 2359 of file mtl_context.mm.

◆ latency_resolve_average()

void blender::gpu::MTLContext::latency_resolve_average ( int64_t frame_latency_us)
inlinestatic

Definition at line 990 of file mtl_context.hh.

References avg_drawable_latency_us, frame_latency, i, and MTL_FRAME_AVERAGE_COUNT.

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

◆ memory_statistics_get()

void blender::gpu::MTLContext::memory_statistics_get ( int * r_total_mem,
int * r_free_mem )
overridevirtual

Implements blender::gpu::Context.

Definition at line 475 of file mtl_context.mm.

◆ pipeline_state_init()

void blender::gpu::MTLContext::pipeline_state_init ( )

◆ sampler_bind()

void blender::gpu::MTLContext::sampler_bind ( MTLSamplerState sampler_state,
uint sampler_unit )

◆ sampler_state_cache_init()

◆ set_scissor()

void blender::gpu::MTLContext::set_scissor ( int scissor_x,
int scissor_y,
int scissor_width,
int scissor_height )

◆ set_scissor_enabled()

void blender::gpu::MTLContext::set_scissor_enabled ( bool scissor_enabled)

◆ set_viewport()

void blender::gpu::MTLContext::set_viewport ( int origin_x,
int origin_y,
int width,
int height )

◆ set_viewports()

void blender::gpu::MTLContext::set_viewports ( int count,
const int(&) viewports[GPU_MAX_VIEWPORTS][4] )

◆ set_visibility_buffer()

void blender::gpu::MTLContext::set_visibility_buffer ( gpu::MTLBuffer * buffer)

◆ specialization_constants_set()

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

Definition at line 718 of file mtl_context.mm.

References constants_state.

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

◆ texture_bind()

void blender::gpu::MTLContext::texture_bind ( gpu::MTLTexture * mtl_texture,
uint texture_unit,
bool is_image )

◆ texture_unbind()

void blender::gpu::MTLContext::texture_unbind ( gpu::MTLTexture * mtl_texture,
bool is_image,
StateManager * state_manager )

◆ texture_unbind_all()

void blender::gpu::MTLContext::texture_unbind_all ( bool is_image)

◆ MTLBackend

friend class MTLBackend
friend

Definition at line 697 of file mtl_context.hh.

References MTLBackend.

Referenced by MTLBackend.

◆ MTLComputeState

friend class MTLComputeState
friend

◆ MTLRenderPassState

friend class MTLRenderPassState
friend

Member Data Documentation

◆ avg_drawable_latency_us

std::atomic< int64_t > blender::gpu::MTLContext::avg_drawable_latency_us = 0
static

Definition at line 704 of file mtl_context.hh.

Referenced by latency_resolve_average(), and blender::gpu::present().

◆ constants_state

◆ device

◆ frame_latency

int64_t blender::gpu::MTLContext::frame_latency = {0}
static

Definition at line 705 of file mtl_context.hh.

Referenced by latency_resolve_average().

◆ global_memory_manager

MTLBufferPool * blender::gpu::MTLContext::global_memory_manager = nullptr
static

◆ global_memory_manager_refcount

int blender::gpu::MTLContext::global_memory_manager_refcount = 0
static

◆ global_memory_manager_reflock

std::mutex blender::gpu::MTLContext::global_memory_manager_reflock
static

◆ label

NSString* blender::gpu::MTLContext::label = nil

Definition at line 717 of file mtl_context.hh.

◆ main_command_buffer

◆ max_drawables_in_flight

std::atomic< int > blender::gpu::MTLContext::max_drawables_in_flight = 0
static

Definition at line 703 of file mtl_context.hh.

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

◆ memory_manager

MTLScratchBufferManager blender::gpu::MTLContext::memory_manager

Definition at line 721 of file mtl_context.hh.

Referenced by MTLContext().

◆ pipeline_state

◆ queue

id<MTLCommandQueue> blender::gpu::MTLContext::queue = nil

Definition at line 712 of file mtl_context.hh.

Referenced by MTLContext(), blender::gpu::present(), and ~MTLContext().


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