|
Blender V4.3
|
#include <mtl_shader_interface.hh>
Inherits blender::gpu::ShaderInterface.
Implementation of Shader interface for Metal Back-end.
Definition at line 167 of file mtl_shader_interface.hh.
| blender::gpu::MTLShaderInterface::MTLShaderInterface | ( | const char * | name | ) |
Definition at line 27 of file mtl_shader_interface.mm.
References init(), blender::gpu::ShaderInterface::inputs_, and STRNCPY.
| blender::gpu::MTLShaderInterface::~MTLShaderInterface | ( | ) |
Definition at line 41 of file mtl_shader_interface.mm.
| void blender::gpu::MTLShaderInterface::add_constant | ( | uint32_t | name_offset | ) |
Definition at line 260 of file mtl_shader_interface.mm.
References blender::gpu::MTLShaderConstant::name_offset.
| void blender::gpu::MTLShaderInterface::add_input_attribute | ( | uint32_t | name_offset, |
| uint32_t | attribute_location, | ||
| MTLVertexFormat | format, | ||
| uint32_t | buffer_index, | ||
| uint32_t | size, | ||
| uint32_t | offset, | ||
| int | matrix_element_count = 1 ) |
Definition at line 93 of file mtl_shader_interface.mm.
References blender::gpu::MTLShaderInputAttribute::buffer_index, blender::gpu::MTLShaderInputAttribute::format, blender::gpu::MTLShaderInputAttribute::index, blender::gpu::MTLShaderInputAttribute::location, blender::gpu::MTLShaderInputAttribute::matrix_element_count, max_ii(), blender::gpu::MTLShaderInputAttribute::name_offset, blender::gpu::MTLShaderInputAttribute::offset, blender::gpu::MTLShaderInputAttribute::size, and size().
| void blender::gpu::MTLShaderInterface::add_push_constant_block | ( | uint32_t | name_offset | ) |
Definition at line 163 of file mtl_shader_interface.mm.
References blender::gpu::ANY, blender::gpu::MTLShaderBufferBlock::buffer_index, blender::gpu::MTLShaderBufferBlock::current_offset, blender::gpu::MTLShaderBufferBlock::name_offset, blender::gpu::MTLShaderBufferBlock::size, and blender::gpu::MTLShaderBufferBlock::stage_mask.
| uint32_t blender::gpu::MTLShaderInterface::add_storage_block | ( | uint32_t | name_offset, |
| uint32_t | buffer_index, | ||
| uint32_t | location, | ||
| uint32_t | size, | ||
| ShaderStage | stage_mask = ShaderStage::ANY ) |
Definition at line 139 of file mtl_shader_interface.mm.
References blender::gpu::ANY, BLI_assert, blender::gpu::MTLShaderBufferBlock::buffer_index, blender::gpu::MTLShaderBufferBlock::current_offset, blender::gpu::MTLShaderBufferBlock::location, max_ii(), MTL_MAX_BUFFER_BINDINGS, blender::gpu::MTLShaderBufferBlock::name_offset, blender::gpu::MTLShaderBufferBlock::size, size(), and blender::gpu::MTLShaderBufferBlock::stage_mask.
| void blender::gpu::MTLShaderInterface::add_texture | ( | uint32_t | name_offset, |
| uint32_t | texture_slot, | ||
| uint32_t | location, | ||
| eGPUTextureType | tex_binding_type, | ||
| eGPUSamplerFormat | sampler_format, | ||
| bool | is_texture_sampler, | ||
| ShaderStage | stage_mask = ShaderStage::FRAGMENT, | ||
| int | tex_buffer_ssbo_location = -1 ) |
Definition at line 223 of file mtl_shader_interface.mm.
References BLI_assert, BLI_assert_msg, GPU_max_textures(), blender::gpu::GPU_SAMPLER_TYPE_MAX, max_ii(), MTL_LOG_WARNING, tex, and Tex::type.
| void blender::gpu::MTLShaderInterface::add_uniform | ( | uint32_t | name_offset, |
| eMTLDataType | type, | ||
| int | array_len = 1 ) |
Definition at line 175 of file mtl_shader_interface.mm.
References blender::gpu::MTLShaderUniform::array_len, BLI_assert, BLI_assert_msg, blender::gpu::MTLShaderUniform::byte_offset, blender::gpu::MTLShaderBufferBlock::current_offset, mtl_get_data_type_alignment(), mtl_get_data_type_size(), MTL_LOG_WARNING, MTL_MAX_UNIFORMS_PER_BLOCK, blender::gpu::MTLShaderUniform::name_offset, blender::gpu::MTLShaderBufferBlock::size, blender::gpu::MTLShaderUniform::size_in_bytes, and blender::gpu::MTLShaderUniform::type.
| uint32_t blender::gpu::MTLShaderInterface::add_uniform_block | ( | uint32_t | name_offset, |
| uint32_t | buffer_index, | ||
| uint32_t | location, | ||
| uint32_t | size, | ||
| ShaderStage | stage_mask = ShaderStage::ANY ) |
Definition at line 115 of file mtl_shader_interface.mm.
References blender::gpu::ANY, BLI_assert, blender::gpu::MTLShaderBufferBlock::buffer_index, blender::gpu::MTLShaderBufferBlock::current_offset, blender::gpu::MTLShaderBufferBlock::location, max_ii(), MTL_MAX_BUFFER_BINDINGS, blender::gpu::MTLShaderBufferBlock::name_offset, blender::gpu::MTLShaderBufferBlock::size, size(), and blender::gpu::MTLShaderBufferBlock::stage_mask.
| id< MTLArgumentEncoder > blender::gpu::MTLShaderInterface::find_argument_encoder | ( | int | buffer_index | ) | const |
Definition at line 608 of file mtl_shader_interface.mm.
Referenced by blender::gpu::MTLContext::ensure_texture_bindings(), and blender::gpu::MTLContext::ensure_texture_bindings().
| int blender::gpu::MTLShaderInterface::get_argument_buffer_bind_index | ( | ShaderStage | stage | ) | const |
Definition at line 603 of file mtl_shader_interface.mm.
References blender::gpu::get_shader_stage_index(), and stage.
Referenced by blender::gpu::MTLShader::bake_pipeline_state(), blender::gpu::MTLContext::ensure_texture_bindings(), and blender::gpu::MTLContext::ensure_texture_bindings().
| const MTLShaderInputAttribute & blender::gpu::MTLShaderInterface::get_attribute | ( | uint | index | ) | const |
Definition at line 483 of file mtl_shader_interface.mm.
References BLI_assert, get_total_attributes(), and MTL_MAX_VERTEX_INPUT_ATTRIBUTES.
Referenced by blender::gpu::MTLShader::bake_pipeline_state(), blender::gpu::MTLShader::prepare_ssbo_vertex_fetch_metadata(), and blender::gpu::MTLShader::ssbo_vertex_fetch_bind_attributes_end().
| uint32_t blender::gpu::MTLShaderInterface::get_enabled_attribute_mask | ( | ) | const |
Definition at line 505 of file mtl_shader_interface.mm.
| uint32_t blender::gpu::MTLShaderInterface::get_max_buffer_index | ( | ) | const |
Definition at line 574 of file mtl_shader_interface.mm.
References get_total_storage_blocks(), and get_total_uniform_blocks().
Referenced by blender::gpu::MTLShader::bake_pipeline_state().
| uint32_t blender::gpu::MTLShaderInterface::get_max_texture_index | ( | ) | const |
Definition at line 593 of file mtl_shader_interface.mm.
Referenced by blender::gpu::MTLContext::ensure_texture_bindings(), blender::gpu::MTLContext::ensure_texture_bindings(), and get_texture().
|
inline |
Definition at line 304 of file mtl_shader_interface.hh.
Referenced by blender::gpu::MTLShader::bake_pipeline_state(), blender::gpu::MTLBatch::bind(), blender::gpu::MTLImmediate::end(), blender::gpu::MTLContext::ensure_buffer_bindings(), blender::gpu::MTLContext::ensure_buffer_bindings(), blender::gpu::MTLContext::ensure_render_pipeline_state(), blender::gpu::MTLContext::ensure_texture_bindings(), and blender::gpu::MTLContext::ensure_texture_bindings().
| const char * blender::gpu::MTLShaderInterface::get_name_at_offset | ( | uint32_t | offset | ) | const |
Definition at line 51 of file mtl_shader_interface.mm.
References blender::gpu::ShaderInterface::name_buffer_.
Referenced by blender::gpu::MTLShader::bake_pipeline_state(), blender::gpu::MTLContext::ensure_buffer_bindings(), blender::gpu::MTLContext::ensure_buffer_bindings(), blender::gpu::MTLContext::ensure_texture_bindings(), blender::gpu::MTLContext::ensure_texture_bindings(), map_builtins(), prepare_common_shader_inputs(), blender::gpu::MTLShader::prepare_ssbo_vertex_fetch_metadata(), and blender::gpu::MTLShader::ssbo_vertex_fetch_bind_attributes_end().
| const MTLShaderBufferBlock & blender::gpu::MTLShaderInterface::get_push_constant_block | ( | ) | const |
Definition at line 531 of file mtl_shader_interface.mm.
Referenced by blender::gpu::MTLContext::ensure_buffer_bindings(), blender::gpu::MTLContext::ensure_buffer_bindings(), and blender::gpu::MTLShader::finalize().
| const MTLShaderBufferBlock & blender::gpu::MTLShaderInterface::get_storage_block | ( | uint | index | ) | const |
Definition at line 552 of file mtl_shader_interface.mm.
References BLI_assert, get_total_storage_blocks(), and MTL_MAX_BUFFER_BINDINGS.
Referenced by blender::gpu::MTLContext::ensure_buffer_bindings(), and blender::gpu::MTLContext::ensure_buffer_bindings().
Definition at line 569 of file mtl_shader_interface.mm.
References blender::gpu::MTLShaderBufferBlock::size.
| const MTLShaderTexture & blender::gpu::MTLShaderInterface::get_texture | ( | uint | index | ) | const |
Definition at line 581 of file mtl_shader_interface.mm.
References BLI_assert, get_max_texture_index(), and MTL_MAX_TEXTURE_SLOTS.
Referenced by blender::gpu::MTLContext::ensure_texture_bindings(), and blender::gpu::MTLContext::ensure_texture_bindings().
| uint32_t blender::gpu::MTLShaderInterface::get_total_attributes | ( | ) | const |
Definition at line 490 of file mtl_shader_interface.mm.
Referenced by blender::gpu::MTLShader::bake_pipeline_state(), get_attribute(), prepare_common_shader_inputs(), blender::gpu::MTLShader::prepare_ssbo_vertex_fetch_metadata(), blender::gpu::MTLShader::ssbo_vertex_fetch_bind_attribute(), blender::gpu::MTLShader::ssbo_vertex_fetch_bind_attributes_begin(), and blender::gpu::MTLShader::ssbo_vertex_fetch_bind_attributes_end().
| uint32_t blender::gpu::MTLShaderInterface::get_total_constants | ( | ) | const |
Definition at line 495 of file mtl_shader_interface.mm.
Referenced by prepare_common_shader_inputs().
| uint32_t blender::gpu::MTLShaderInterface::get_total_storage_blocks | ( | ) | const |
Definition at line 559 of file mtl_shader_interface.mm.
Referenced by blender::gpu::MTLContext::ensure_buffer_bindings(), blender::gpu::MTLContext::ensure_buffer_bindings(), get_max_buffer_index(), get_storage_block(), and prepare_common_shader_inputs().
| uint32_t blender::gpu::MTLShaderInterface::get_total_textures | ( | ) | const |
Definition at line 588 of file mtl_shader_interface.mm.
Referenced by blender::gpu::MTLContext::compute_dispatch(), blender::gpu::MTLContext::compute_dispatch_indirect(), blender::gpu::MTLContext::ensure_render_pipeline_state(), prepare_common_shader_inputs(), and blender::gpu::MTLShader::uniform_int().
| uint32_t blender::gpu::MTLShaderInterface::get_total_uniform_blocks | ( | ) | const |
Definition at line 536 of file mtl_shader_interface.mm.
Referenced by blender::gpu::MTLShader::bake_compute_pipeline_state(), blender::gpu::MTLShader::bake_pipeline_state(), blender::gpu::MTLContext::ensure_buffer_bindings(), blender::gpu::MTLContext::ensure_buffer_bindings(), get_max_buffer_index(), get_uniform_block(), and prepare_common_shader_inputs().
| uint32_t blender::gpu::MTLShaderInterface::get_total_uniforms | ( | ) | const |
Definition at line 518 of file mtl_shader_interface.mm.
Referenced by get_uniform(), prepare_common_shader_inputs(), blender::gpu::MTLShader::uniform_float(), and blender::gpu::MTLShader::uniform_int().
| uint32_t blender::gpu::MTLShaderInterface::get_total_vertex_stride | ( | ) | const |
Definition at line 500 of file mtl_shader_interface.mm.
| const MTLShaderUniform & blender::gpu::MTLShaderInterface::get_uniform | ( | uint | index | ) | const |
Definition at line 511 of file mtl_shader_interface.mm.
References BLI_assert, get_total_uniforms(), and MTL_MAX_UNIFORMS_PER_BLOCK.
Referenced by blender::gpu::MTLShader::uniform_float(), and blender::gpu::MTLShader::uniform_int().
| const MTLShaderBufferBlock & blender::gpu::MTLShaderInterface::get_uniform_block | ( | uint | index | ) | const |
Definition at line 524 of file mtl_shader_interface.mm.
References BLI_assert, get_total_uniform_blocks(), and MTL_MAX_BUFFER_BINDINGS.
Referenced by blender::gpu::MTLContext::ensure_buffer_bindings(), and blender::gpu::MTLContext::ensure_buffer_bindings().
Definition at line 546 of file mtl_shader_interface.mm.
References blender::gpu::MTLShaderBufferBlock::size.
| bool blender::gpu::MTLShaderInterface::has_storage_block | ( | uint32_t | block_index | ) | const |
Definition at line 564 of file mtl_shader_interface.mm.
| bool blender::gpu::MTLShaderInterface::has_uniform_block | ( | uint32_t | block_index | ) | const |
Definition at line 541 of file mtl_shader_interface.mm.
| void blender::gpu::MTLShaderInterface::init | ( | ) |
Definition at line 56 of file mtl_shader_interface.mm.
References ARRAY_SIZE, blender::gpu::ShaderInterface::builtin_blocks_, blender::gpu::ShaderInterface::builtins_, GPU_NUM_UNIFORM_BLOCKS, GPU_NUM_UNIFORMS, MTL_MAX_TEXTURE_SLOTS, blender::gpu::MTLShaderTexture::slot_index, tex, and blender::gpu::MTLShaderTexture::used.
Referenced by blender::gpu::MSLGeneratorInterface::bake_shader_interface(), and MTLShaderInterface().
| void blender::gpu::MTLShaderInterface::insert_argument_encoder | ( | int | buffer_index, |
| id | encoder ) |
Definition at line 617 of file mtl_shader_interface.mm.
References MTL_LOG_WARNING.
Referenced by blender::gpu::MTLContext::ensure_texture_bindings(), and blender::gpu::MTLContext::ensure_texture_bindings().
| void blender::gpu::MTLShaderInterface::map_builtins | ( | ) |
Definition at line 268 of file mtl_shader_interface.mm.
References blender::gpu::ShaderInput::binding, BLI_assert, blender::gpu::ShaderInterface::builtin_blocks_, blender::gpu::ShaderInterface::builtin_uniform_block_name(), blender::gpu::ShaderInterface::builtin_uniform_name(), blender::gpu::ShaderInterface::builtins_, get_name_at_offset(), GPU_NUM_UNIFORM_BLOCKS, GPU_NUM_UNIFORMS, blender::gpu::ShaderInput::location, MTL_LOG_INFO, blender::gpu::ShaderInput::name_offset, blender::gpu::ShaderInterface::ubo_get(), and blender::gpu::ShaderInterface::uniform_get().
Referenced by prepare_common_shader_inputs().
| blender::gpu::MTLShaderInterface::MEM_CXX_CLASS_ALLOC_FUNCS | ( | "MTLShaderInterface" | ) |
| void blender::gpu::MTLShaderInterface::prepare_common_shader_inputs | ( | const shader::ShaderCreateInfo * | info = nullptr | ) |
Definition at line 310 of file mtl_shader_interface.mm.
References blender::gpu::ShaderInterface::attr_len_, blender::gpu::ShaderInput::binding, BLI_assert, BLI_assert_msg, BLI_hash_string(), BLI_snprintf(), blender::gpu::MTLShaderTexture::buffer_metadata_uniform_loc, blender::gpu::ShaderInterface::constant_len_, blender::gpu::shader::ShaderCreateInfo::geometry_resources_, get_name_at_offset(), get_total_attributes(), get_total_constants(), get_total_storage_blocks(), get_total_textures(), get_total_uniform_blocks(), get_total_uniforms(), blender::gpu::ShaderInterface::inputs_, blender::gpu::MTLShaderBufferBlock::location, blender::gpu::MTLShaderInputAttribute::location, blender::gpu::MTLShaderTexture::location, blender::gpu::ShaderInput::location, map_builtins(), MEM_callocN, blender::gpu::ShaderInput::name_hash, blender::gpu::MTLShaderBufferBlock::name_offset, blender::gpu::MTLShaderConstant::name_offset, blender::gpu::MTLShaderInputAttribute::name_offset, blender::gpu::MTLShaderTexture::name_offset, blender::gpu::MTLShaderUniform::name_offset, blender::gpu::ShaderInput::name_offset, blender::gpu::MTLShaderTexture::slot_index, blender::gpu::ShaderInterface::sort_inputs(), blender::gpu::ShaderInterface::ssbo_attr_mask_, blender::gpu::ShaderInterface::ssbo_len_, blender::gpu::shader::ShaderCreateInfo::Resource::STORAGE_BUFFER, blender::gpu::MTLShaderTexture::texture_buffer_ssbo_location, blender::gpu::ShaderInterface::ubo_len_, blender::gpu::ShaderInterface::uniform_get(), blender::gpu::ShaderInterface::uniform_len_, and blender::gpu::MTLShaderTexture::used.
| void blender::gpu::MTLShaderInterface::set_sampler_properties | ( | bool | use_argument_buffer, |
| uint32_t | argument_buffer_bind_index_vert, | ||
| uint32_t | argument_buffer_bind_index_frag, | ||
| uint32_t | argument_buffer_bind_index_compute ) |
Definition at line 468 of file mtl_shader_interface.mm.
References blender::gpu::COMPUTE, blender::gpu::FRAGMENT, blender::gpu::get_shader_stage_index(), and blender::gpu::VERTEX.
| bool blender::gpu::MTLShaderInterface::uses_argument_buffer_for_samplers | ( | ) | const |
Definition at line 598 of file mtl_shader_interface.mm.
Referenced by blender::gpu::MTLShader::bake_pipeline_state(), blender::gpu::MTLContext::ensure_texture_bindings(), and blender::gpu::MTLContext::ensure_texture_bindings().