|
Blender V4.3
|
#include <mtl_shader.hh>
Inherits blender::gpu::Shader.
Public Attributes | |
| int | uni_ssbo_input_prim_type_loc = -1 |
| int | uni_ssbo_input_vert_count_loc = -1 |
| int | uni_ssbo_uses_indexed_rendering = -1 |
| int | uni_ssbo_uses_index_mode_u16 = -1 |
| int | uni_ssbo_index_base_loc = -1 |
Public Attributes inherited from blender::gpu::Shader | |
| ShaderInterface * | interface = nullptr |
| struct blender::gpu::Shader::Constants | constants |
Shader Translation. | |
| void | prepare_ssbo_vertex_fetch_metadata () |
SSBO-vertex-fetch-mode attribute control. | |
| void | ssbo_vertex_fetch_bind_attributes_begin () |
| void | ssbo_vertex_fetch_bind_attribute (const MTLSSBOAttribute &ssbo_attr) |
| void | ssbo_vertex_fetch_bind_attributes_end (id< MTLRenderCommandEncoder > active_encoder) |
| VertBuf * | get_transform_feedback_active_buffer () |
| bool | has_transform_feedback_varying (std::string str) |
| static int | ssbo_vertex_type_to_attr_type (MTLVertexFormat attribute_type) |
Additional Inherited Members | |
Static Public Member Functions inherited from blender::gpu::Shader | |
| static bool | srgb_uniform_dirty_get () |
| static void | set_srgb_uniform (GPUShader *shader) |
| static void | set_framebuffer_srgb_target (int use_srgb_to_linear) |
Protected Member Functions inherited from blender::gpu::Shader | |
| void | print_log (Span< const char * > sources, const char *log, const char *stage, bool error, GPULogParser *parser) |
Protected Attributes inherited from blender::gpu::Shader | |
| char | name [64] |
| Shader * | parent_shader_ = nullptr |
MTLShader implements shader compilation, Pipeline State Object (PSO) creation for rendering and uniform data binding. Shaders can either be created from native MSL, or generated from a GLSL source shader using #GPUShaderCreateInfo.
Shader creation process:
Definition at line 168 of file mtl_shader.hh.
| blender::gpu::MTLShader::MTLShader | ( | MTLContext * | ctx, |
| const char * | name ) |
Definition at line 72 of file mtl_shader.mm.
| blender::gpu::MTLShader::MTLShader | ( | MTLContext * | ctx, |
| MTLShaderInterface * | interface, | ||
| const char * | name, | ||
| NSString * | input_vertex_source, | ||
| NSString * | input_fragment_source, | ||
| NSString * | vertex_function_name_, | ||
| NSString * | fragment_function_name_ ) |
Definition at line 93 of file mtl_shader.mm.
References BLI_assert, finalize(), set_fragment_function_name(), set_interface(), set_vertex_function_name(), and shader_source_from_msl().
| blender::gpu::MTLShader::~MTLShader | ( | ) |
Definition at line 112 of file mtl_shader.mm.
References is_valid(), and MEM_freeN().
| MTLComputePipelineStateInstance * blender::gpu::MTLShader::bake_compute_pipeline_state | ( | MTLContext * | ctx, |
| MTLComputePipelineStateDescriptor & | compute_pipeline_descriptor ) |
If Max Total threads per threadgroup tuning parameters are specified, compile with these. This enables the compiler to make informed decisions based on the upper bound of threads issued for a given compute call. This per-shader tuning can reduce the static register memory allocation by reducing the worst-case allocation and increasing thread occupancy.
NOTE: This is only enabled on Apple M1 and M2 GPUs. Apple M3 GPUs feature dynamic caching which controls register allocation dynamically based on the runtime state.
Definition at line 1474 of file mtl_shader.mm.
References blender::gpu::APPLE_GPU_M1, blender::gpu::APPLE_GPU_M2, blender::gpu::MTLComputePipelineStateInstance::base_storage_buffer_index, blender::gpu::MTLComputePipelineStateInstance::base_uniform_buffer_index, BLI_assert, blender::gpu::MTLComputePipelineStateInstance::compute, blender::gpu::Shader::constants, blender::gpu::MTLContext::device, ELEM, error(), blender::gpu::MTLBackend::get_capabilities(), get_interface(), blender::gpu::MTLShaderInterface::get_total_uniform_blocks(), blender::gpu::MTLCapabilities::gpu, init(), is_valid(), MTL_LOG_INFO, MTL_LOG_WARNING, blender::gpu::Shader::name, options, blender::gpu::populate_specialization_constant_values(), blender::gpu::MTLComputePipelineStateInstance::pso, blender::gpu::MTLComputePipelineStateInstance::shader_pso_index, blender::gpu::MTLComputePipelineStateDescriptor::specialization_state, blender::gpu::MTLComputePipelineStateCommon::threadgroup_x_len, blender::gpu::MTLComputePipelineStateCommon::threadgroup_y_len, and blender::gpu::MTLComputePipelineStateCommon::threadgroup_z_len.
Referenced by blender::gpu::MTLContext::ensure_compute_pipeline_state(), and finalize().
| MTLRenderPipelineStateInstance * blender::gpu::MTLShader::bake_current_pipeline_state | ( | MTLContext * | ctx, |
| MTLPrimitiveTopologyClass | prim_type ) |
Bakes or fetches a pipeline state using the current #MTLRenderPipelineStateDescriptor state.
This state contains information on shader inputs/outputs, such as the vertex descriptor, used to control vertex assembly for current vertex data, and active render target information, describing the output attachment pixel formats.
Other rendering parameters such as global point-size, blend state, color mask etc; are also used. See mtl_shader.h for full #MLRenderPipelineStateDescriptor.
Populate global pipeline descriptor and use this to prepare new PSO.
Definition at line 866 of file mtl_shader.mm.
References blender::gpu::MTLContextGlobalShaderPipelineState::alpha_blend_op, blender::gpu::MTLRenderPipelineStateDescriptor::alpha_blend_op, bake_pipeline_state(), blender::gpu::MTLContextGlobalShaderPipelineState::blending_enabled, blender::gpu::MTLRenderPipelineStateDescriptor::blending_enabled, BLI_assert, blender::gpu::MTLContextGlobalShaderPipelineState::clip_distance_enabled, blender::gpu::MTLRenderPipelineStateDescriptor::clipping_plane_enable_mask, blender::gpu::MTLRenderPipelineStateDescriptor::color_attachment_format, blender::gpu::MTLContextGlobalShaderPipelineState::color_write_mask, blender::gpu::MTLRenderPipelineStateDescriptor::color_write_mask, blender::gpu::Shader::constants, blender::gpu::MTLRenderPipelineStateDescriptor::depth_attachment_format, blender::gpu::MTLContextGlobalShaderPipelineState::dest_alpha_blend_factor, blender::gpu::MTLRenderPipelineStateDescriptor::dest_alpha_blend_factor, blender::gpu::MTLContextGlobalShaderPipelineState::dest_rgb_blend_factor, blender::gpu::MTLRenderPipelineStateDescriptor::dest_rgb_blend_factor, blender::gpu::Texture::format_get(), blender::gpu::MTLContext::get(), blender::gpu::MTLFrameBuffer::get_color_attachment(), blender::gpu::MTLContext::get_current_framebuffer(), blender::gpu::MTLFrameBuffer::get_depth_attachment(), blender::gpu::MTLFrameBuffer::get_is_srgb(), blender::gpu::MTLStateManager::get_pipeline_descriptor(), blender::gpu::MTLFrameBuffer::get_srgb_enabled(), blender::gpu::MTLFrameBuffer::get_stencil_attachment(), GPU_FB_MAX_COLOR_ATTACHMENT, blender::gpu::gpu_texture_format_to_metal(), is_valid(), blender::gpu::MTLRenderPipelineStateDescriptor::num_color_attachments, blender::gpu::MTLContext::pipeline_state, blender::gpu::MTLContextGlobalShaderPipelineState::point_size, blender::gpu::MTLRenderPipelineStateDescriptor::point_size, blender::gpu::MTLVertexDescriptor::prim_topology_class, blender::gpu::MTLContextGlobalShaderPipelineState::rgb_blend_op, blender::gpu::MTLRenderPipelineStateDescriptor::rgb_blend_op, blender::gpu::MTLRenderPipelineStateDescriptor::specialization_state, blender::gpu::MTLContextGlobalShaderPipelineState::src_alpha_blend_factor, blender::gpu::MTLRenderPipelineStateDescriptor::src_alpha_blend_factor, blender::gpu::MTLContextGlobalShaderPipelineState::src_rgb_blend_factor, blender::gpu::MTLRenderPipelineStateDescriptor::src_rgb_blend_factor, blender::gpu::Context::state_manager, blender::gpu::MTLRenderPipelineStateDescriptor::stencil_attachment_format, blender::gpu::MTLAttachment::texture, blender::gpu::MTLAttachment::used, blender::gpu::Shader::Constants::values, and blender::gpu::MTLRenderPipelineStateDescriptor::vertex_descriptor.
Referenced by blender::gpu::MTLContext::ensure_render_pipeline_state().
| MTLRenderPipelineStateInstance * blender::gpu::MTLShader::bake_pipeline_state | ( | MTLContext * | ctx, |
| MTLPrimitiveTopologyClass | prim_type, | ||
| const MTLRenderPipelineStateDescriptor & | pipeline_descriptor ) |
Definition at line 951 of file mtl_shader.mm.
References blender::gpu::MTLRenderPipelineStateDescriptor::alpha_blend_op, blender::gpu::MTLVertexDescriptor::attributes, blender::gpu::MTLRenderPipelineStateInstance::base_storage_buffer_index, blender::gpu::MTLRenderPipelineStateInstance::base_uniform_buffer_index, blender::gpu::MTLRenderPipelineStateDescriptor::blending_enabled, BLI_assert, BLI_assert_msg, blender::gpu::MTLRenderPipelineStateInstance::buffer_bindings_reflection_data_frag, blender::gpu::MTLRenderPipelineStateInstance::buffer_bindings_reflection_data_vert, blender::gpu::MTLVertexAttributeDescriptorPSO::buffer_index, blender::gpu::MTLVertexDescriptor::buffer_layouts, blender::gpu::MTLContextGlobalShaderPipelineState::clip_distance_enabled, blender::gpu::MTLRenderPipelineStateDescriptor::clipping_plane_enable_mask, blender::gpu::MTLRenderPipelineStateDescriptor::color_attachment_format, blender::gpu::MTLRenderPipelineStateDescriptor::color_write_mask, blender::gpu::Shader::constants, count, blender::gpu::MTLRenderPipelineStateDescriptor::depth_attachment_format, blender::gpu::MTLRenderPipelineStateDescriptor::dest_alpha_blend_factor, blender::gpu::MTLRenderPipelineStateDescriptor::dest_rgb_blend_factor, blender::gpu::MTLContext::device, error(), fabsf, blender::gpu::MTLVertexAttributeDescriptorPSO::format, blender::gpu::MTLVertexAttributeDescriptorPSO::format_conversion_mode, blender::gpu::MTLRenderPipelineStateInstance::frag, blender::gpu::MTLShaderInterface::get_argument_buffer_bind_index(), blender::gpu::MTLShaderInterface::get_attribute(), get_interface(), blender::gpu::MTLShaderInterface::get_max_buffer_index(), blender::gpu::MTLShaderInterface::get_name(), blender::gpu::MTLShaderInterface::get_name_at_offset(), blender::gpu::MTLShaderInterface::get_total_attributes(), blender::gpu::MTLShaderInterface::get_total_uniform_blocks(), get_uses_ssbo_vertex_fetch(), blender::gpu::MTLShaderBuilder::glsl_fragment_source_, GPU_FB_MAX_COLOR_ATTACHMENT, GPU_FETCH_INT_TO_FLOAT, GPU_FETCH_INT_TO_FLOAT_UNIT, GPU_SHADER_TFB_NONE, GPU_VERT_ATTR_MAX_LEN, blender::gpu::MTLRenderPipelineStateDescriptor::hash(), int, is_valid(), isActive(), blender::gpu::MTLVertexDescriptor::max_attribute_value, max_ii(), blender::gpu::mtl_format_supports_blending(), MTL_LOG_INFO, MTL_LOG_WARNING, MTL_MAX_BUFFER_BINDINGS, MTL_SSBO_VERTEX_FETCH_IBO_INDEX, blender::gpu::Shader::name, blender::gpu::MTLRenderPipelineStateInstance::null_attribute_buffer_index, blender::gpu::MTLVertexDescriptor::num_vert_buffers, blender::gpu::MTLVertexAttributeDescriptorPSO::offset, options, blender::gpu::MTLContext::pipeline_state, blender::gpu::MTLRenderPipelineStateDescriptor::point_size, blender::gpu::populate_specialization_constant_values(), blender::gpu::MTLVertexDescriptor::prim_topology_class, blender::gpu::MTLRenderPipelineStateInstance::prim_type, blender::gpu::Shader::print_log(), printf, blender::gpu::MTLRenderPipelineStateInstance::pso, blender::gpu::MTLRenderPipelineStateInstance::reflection_data_available, reset(), blender::gpu::MTLRenderPipelineStateDescriptor::rgb_blend_op, shader_debug_printf, blender::gpu::MTLRenderPipelineStateInstance::shader_pso_index, blender::gpu::MTLRenderPipelineStateDescriptor::specialization_state, blender::gpu::MTLRenderPipelineStateDescriptor::src_alpha_blend_factor, blender::gpu::MTLRenderPipelineStateDescriptor::src_rgb_blend_factor, blender::gpu::MTLRenderPipelineStateDescriptor::stencil_attachment_format, blender::gpu::MTLVertexBufferLayoutDescriptorPSO::step_function, blender::gpu::MTLVertexBufferLayoutDescriptorPSO::step_rate, blender::gpu::MTLVertexBufferLayoutDescriptorPSO::stride, blender::gpu::MTLRenderPipelineStateInstance::transform_feedback_buffer_index, blender::gpu::MTLShaderInterface::uses_argument_buffer_for_samplers(), blender::gpu::MTLRenderPipelineStateInstance::vert, blender::gpu::VERTEX, and blender::gpu::MTLRenderPipelineStateDescriptor::vertex_descriptor.
Referenced by bake_current_pipeline_state(), and warm_cache().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 531 of file mtl_shader.mm.
References blender::gpu::MTLContextGlobalShaderPipelineState::active_shader, blender::gpu::MTLContext::get(), blender::gpu::Shader::interface, is_valid(), MTL_LOG_WARNING, blender::gpu::Shader::name_get(), and blender::gpu::MTLContext::pipeline_state.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 848 of file mtl_shader_generator.mm.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 251 of file mtl_shader.mm.
References BLI_assert, blender::gpu::MTLShaderBuilder::glsl_compute_source_, blender::gpu::shader::gpu_shader_dependency_get_filename_from_source_string(), blender::MutableSpan< T >::size(), blender::gpu::MTLShaderBuilder::source_from_msl_, and SOURCES_INDEX_VERSION.
|
overridevirtual |
Extract desired custom parameters from CreateInfo.
Implements blender::gpu::Shader.
Definition at line 276 of file mtl_shader.mm.
References blender::gpu::ANY, bake_compute_pipeline_state(), BLI_assert, BLI_assert_msg, BLI_assert_unreachable, blender::gpu::shader::ShaderCreateInfo::builtins_, blender::gpu::COMPUTE, blender::gpu::Shader::constants, datatoc_mtl_shader_common_msl, blender::gpu::MTLContext::device, error(), blender::gpu::FRAGMENT, get_interface(), blender::gpu::MTLShaderInterface::get_push_constant_block(), blender::gpu::MTLShaderBuilder::glsl_compute_source_, blender::gpu::MTLShaderBuilder::glsl_fragment_source_, GPU_SHADER_TFB_NONE, init(), is_valid(), MEM_callocN, blender::gpu::MTLShaderBuilder::msl_source_compute_, blender::gpu::MTLShaderBuilder::msl_source_frag_, blender::gpu::MTLShaderBuilder::msl_source_vert_, MTL_LOG_ERROR, blender::gpu::Shader::name, blender::gpu::Shader::name_get(), options, blender::gpu::Shader::print_log(), push_constant_bindstate_mark_dirty(), set_interface(), blender::gpu::MTLShaderBufferBlock::size, blender::gpu::MTLShaderBuilder::source_from_msl_, str, blender::gpu::shader::ShaderCreateInfo::subpass_inputs_, blender::gpu::to_string(), blender::gpu::Shader::Constants::values, and blender::gpu::VERTEX.
Referenced by MTLShader().
| bool blender::gpu::MTLShader::finalize_compute | ( | const shader::ShaderCreateInfo * | info | ) |
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 809 of file mtl_shader_generator.mm.
References blender::gpu::shader::ShaderCreateInfo::fragment_outputs_, blender::gpu::shader::ShaderCreateInfo::subpass_inputs_, and blender::gpu::to_string().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 223 of file mtl_shader.mm.
References BLI_assert, blender::gpu::MTLShaderBuilder::glsl_fragment_source_, blender::gpu::shader::gpu_shader_dependency_get_filename_from_source_string(), blender::MutableSpan< T >::size(), blender::gpu::MTLShaderBuilder::source_from_msl_, and SOURCES_INDEX_VERSION.
|
overridevirtual |
Implements blender::gpu::Shader.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 842 of file mtl_shader_generator.mm.
References BLI_assert_msg.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 218 of file mtl_shader.mm.
References MTL_LOG_ERROR.
|
inline |
Definition at line 395 of file mtl_shader.hh.
Referenced by blender::gpu::MTLContext::compute_dispatch(), and blender::gpu::MTLContext::compute_dispatch_indirect().
|
inline |
Definition at line 313 of file mtl_shader.hh.
|
inline |
Definition at line 317 of file mtl_shader.hh.
References blender::gpu::Shader::interface.
Referenced by bake_compute_pipeline_state(), bake_pipeline_state(), blender::gpu::MTLBatch::bind(), blender::gpu::MTLComputeState::bind_compute_sampler(), blender::gpu::MTLRenderPassState::bind_fragment_sampler(), blender::gpu::MTLRenderPassState::bind_vertex_sampler(), blender::gpu::MTLContext::compute_dispatch(), blender::gpu::MTLContext::compute_dispatch_indirect(), blender::gpu::MTLImmediate::end(), blender::gpu::MTLContext::ensure_compute_pipeline_state(), blender::gpu::MTLContext::ensure_render_pipeline_state(), finalize(), prepare_ssbo_vertex_fetch_metadata(), ssbo_vertex_fetch_bind_attribute(), ssbo_vertex_fetch_bind_attributes_begin(), ssbo_vertex_fetch_bind_attributes_end(), uniform_float(), and uniform_int().
|
inline |
Definition at line 321 of file mtl_shader.hh.
Referenced by blender::gpu::MTLContext::ensure_buffer_bindings(), and blender::gpu::MTLContext::ensure_buffer_bindings().
| bool blender::gpu::MTLShader::get_push_constant_is_dirty | ( | ) |
Definition at line 724 of file mtl_shader.mm.
Referenced by blender::gpu::MTLContext::ensure_buffer_bindings().
|
inlineoverridevirtual |
Implements blender::gpu::Shader.
Definition at line 354 of file mtl_shader.hh.
Referenced by blender::gpu::MTLImmediate::end().
|
inline |
Definition at line 365 of file mtl_shader.hh.
Referenced by blender::gpu::MTLImmediate::end().
| blender::gpu::VertBuf * blender::gpu::MTLShader::get_transform_feedback_active_buffer | ( | ) |
Definition at line 1807 of file mtl_shader.mm.
References GPU_SHADER_TFB_NONE.
Referenced by blender::gpu::MTLContext::ensure_render_pipeline_state().
|
inlineoverridevirtual |
Implements blender::gpu::Shader.
Definition at line 350 of file mtl_shader.hh.
Referenced by bake_pipeline_state(), blender::gpu::MTLBatch::bind(), and blender::gpu::MTLImmediate::end().
|
inline |
Definition at line 305 of file mtl_shader.hh.
Referenced by blender::gpu::MTLParallelShaderCompiler::precompile_specializations().
|
inline |
Definition at line 309 of file mtl_shader.hh.
References blender::gpu::Shader::parent_shader_.
| bool blender::gpu::MTLShader::has_transform_feedback_varying | ( | std::string | str | ) |
Definition at line 1815 of file mtl_shader.mm.
References blender::Vector< T, InlineBufferCapacity, Allocator >::begin(), blender::Vector< T, InlineBufferCapacity, Allocator >::end(), GPU_SHADER_TFB_NONE, and str.
Referenced by blender::gpu::MSLGeneratorInterface::generate_msl_vertex_transform_feedback_out_struct().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 190 of file mtl_shader.mm.
|
inline |
Definition at line 301 of file mtl_shader.hh.
Referenced by bake_compute_pipeline_state(), bake_current_pipeline_state(), bake_pipeline_state(), blender::gpu::MTLBatch::bind(), bind(), blender::gpu::MTLImmediate::end(), blender::gpu::MTLContext::ensure_compute_pipeline_state(), blender::gpu::MTLContext::ensure_render_pipeline_state(), finalize(), blender::gpu::MTLParallelShaderCompiler::precompile_specializations(), uniform_float(), uniform_int(), and ~MTLShader().
| void blender::gpu::MTLShader::prepare_ssbo_vertex_fetch_metadata | ( | ) |
Definition at line 1727 of file mtl_shader_generator.mm.
References BLI_assert, BLI_assert_msg, BLI_strncpy(), blender::gpu::const_strlen(), blender::gpu::MTLShaderInterface::get_attribute(), get_interface(), blender::gpu::MTLShaderInterface::get_name_at_offset(), blender::gpu::MTLShaderInterface::get_total_attributes(), GPU_VERT_ATTR_MAX_LEN, blender::gpu::Shader::interface, blender::gpu::ShaderInput::location, blender::gpu::MTLShaderInputAttribute::name_offset, uni_ssbo_index_base_loc, uni_ssbo_input_prim_type_loc, uni_ssbo_input_vert_count_loc, uni_ssbo_uses_index_mode_u16, uni_ssbo_uses_indexed_rendering, blender::gpu::ShaderInterface::uniform_get(), UNIFORM_SSBO_FETCHMODE_STR, UNIFORM_SSBO_INDEX_BASE_STR, UNIFORM_SSBO_INDEX_MODE_U16_STR, UNIFORM_SSBO_INPUT_PRIM_TYPE_STR, UNIFORM_SSBO_INPUT_VERT_COUNT_STR, UNIFORM_SSBO_OFFSET_STR, UNIFORM_SSBO_STRIDE_STR, UNIFORM_SSBO_TYPE_STR, UNIFORM_SSBO_USES_INDEXED_RENDERING_STR, and UNIFORM_SSBO_VBO_ID_STR.
|
inlineoverridevirtual |
Implements blender::gpu::Shader.
Definition at line 360 of file mtl_shader.hh.
| void blender::gpu::MTLShader::push_constant_bindstate_mark_dirty | ( | bool | is_dirty | ) |
Definition at line 729 of file mtl_shader.mm.
Referenced by blender::gpu::MTLContext::ensure_buffer_bindings(), blender::gpu::MTLContext::ensure_buffer_bindings(), finalize(), uniform_float(), and uniform_int().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 764 of file mtl_shader_generator.mm.
References blender::gpu::shader::ShaderCreateInfo::batch_resources_, blender::gpu::shader::ShaderCreateInfo::geometry_resources_, blender::gpu::shader::ShaderCreateInfo::pass_resources_, and blender::gpu::print_resource().
| void blender::gpu::MTLShader::set_compute_function_name | ( | NSString * | compute_function_name | ) |
Definition at line 782 of file mtl_shader.mm.
| void blender::gpu::MTLShader::set_fragment_function_name | ( | NSString * | fragment_function_name | ) |
Definition at line 777 of file mtl_shader.mm.
Referenced by MTLShader().
| void blender::gpu::MTLShader::set_interface | ( | MTLShaderInterface * | interface | ) |
Definition at line 803 of file mtl_shader.mm.
References BLI_assert, and blender::gpu::Shader::interface.
Referenced by finalize(), and MTLShader().
| void blender::gpu::MTLShader::set_vertex_function_name | ( | NSString * | vetex_function_name | ) |
Definition at line 772 of file mtl_shader.mm.
Referenced by MTLShader().
| void blender::gpu::MTLShader::shader_compute_source_from_msl | ( | NSString * | input_compute_source | ) |
Definition at line 796 of file mtl_shader.mm.
References BLI_assert, blender::gpu::MTLShaderBuilder::msl_source_compute_, and blender::gpu::MTLShaderBuilder::source_from_msl_.
| void blender::gpu::MTLShader::shader_source_from_msl | ( | NSString * | input_vertex_source, |
| NSString * | input_fragment_source ) |
Definition at line 787 of file mtl_shader.mm.
References BLI_assert, blender::gpu::MTLShaderBuilder::msl_source_frag_, blender::gpu::MTLShaderBuilder::msl_source_vert_, and blender::gpu::MTLShaderBuilder::source_from_msl_.
Referenced by MTLShader().
| void blender::gpu::MTLShader::ssbo_vertex_fetch_bind_attribute | ( | const MTLSSBOAttribute & | ssbo_attr | ) |
Definition at line 1721 of file mtl_shader.mm.
References blender::gpu::MTLSSBOAttribute::attribute_format, blender::gpu::MTLSSBOAttribute::attribute_offset, BLI_assert, get_interface(), blender::gpu::MTLShaderInterface::get_total_attributes(), blender::gpu::MTLSSBOAttribute::is_instance, blender::gpu::MTLSSBOAttribute::mtl_attribute_index, blender::gpu::MTLSSBOAttribute::per_vertex_stride, uniform_int(), UNUSED_VARS_NDEBUG, and blender::gpu::MTLSSBOAttribute::vbo_id.
Referenced by blender::gpu::MTLImmediate::end(), and ssbo_vertex_fetch_bind_attributes_end().
| void blender::gpu::MTLShader::ssbo_vertex_fetch_bind_attributes_begin | ( | ) |
Definition at line 1709 of file mtl_shader.mm.
References get_interface(), blender::gpu::MTLShaderInterface::get_total_attributes(), and MTL_SSBO_VERTEX_FETCH_MAX_VBOS.
Referenced by blender::gpu::MTLImmediate::end().
| void blender::gpu::MTLShader::ssbo_vertex_fetch_bind_attributes_end | ( | id< MTLRenderCommandEncoder > | active_encoder | ) |
Definition at line 1751 of file mtl_shader.mm.
References blender::gpu::MTLRenderPassState::bind_vertex_buffer(), BLI_assert, BLI_assert_msg, blender::gpu::MTLContext::get(), blender::gpu::MTLShaderInterface::get_attribute(), get_interface(), blender::gpu::MTLShaderInterface::get_name_at_offset(), blender::gpu::MTLContext::get_null_attribute_buffer(), blender::gpu::MTLCommandBufferManager::get_render_pass_state(), blender::gpu::MTLShaderInterface::get_total_attributes(), GPU_SHADER_ATTR_TYPE_FLOAT, blender::gpu::MTLContext::main_command_buffer, MTL_LOG_WARNING, MTL_SSBO_VERTEX_FETCH_MAX_VBOS, blender::gpu::Shader::name_get(), blender::gpu::MTLShaderInputAttribute::name_offset, and ssbo_vertex_fetch_bind_attribute().
Referenced by blender::gpu::MTLBatch::bind(), and blender::gpu::MTLImmediate::end().
|
static |
Definition at line 1651 of file mtl_shader.mm.
References BLI_assert_msg, GPU_SHADER_ATTR_TYPE_CHAR, GPU_SHADER_ATTR_TYPE_CHAR2, GPU_SHADER_ATTR_TYPE_CHAR3, GPU_SHADER_ATTR_TYPE_CHAR4, GPU_SHADER_ATTR_TYPE_FLOAT, GPU_SHADER_ATTR_TYPE_INT, GPU_SHADER_ATTR_TYPE_INT1010102_NORM, GPU_SHADER_ATTR_TYPE_IVEC2, GPU_SHADER_ATTR_TYPE_IVEC3, GPU_SHADER_ATTR_TYPE_IVEC4, GPU_SHADER_ATTR_TYPE_SHORT, GPU_SHADER_ATTR_TYPE_SHORT3_NORM, GPU_SHADER_ATTR_TYPE_UCHAR2_NORM, GPU_SHADER_ATTR_TYPE_UCHAR3_NORM, GPU_SHADER_ATTR_TYPE_UCHAR4_NORM, GPU_SHADER_ATTR_TYPE_UCHAR_NORM, GPU_SHADER_ATTR_TYPE_UINT, GPU_SHADER_ATTR_TYPE_UVEC2, GPU_SHADER_ATTR_TYPE_UVEC3, GPU_SHADER_ATTR_TYPE_UVEC4, GPU_SHADER_ATTR_TYPE_VEC2, GPU_SHADER_ATTR_TYPE_VEC3, and GPU_SHADER_ATTR_TYPE_VEC4.
Referenced by blender::gpu::MTLImmediate::end().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 519 of file mtl_shader.mm.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 508 of file mtl_shader.mm.
References BLI_assert, GPU_SHADER_TFB_NONE, and GPU_USAGE_DEVICE_ONLY.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 498 of file mtl_shader.mm.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::Vector< T, InlineBufferCapacity, Allocator >::clear(), and blender::Span< T >::size().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 543 of file mtl_shader.mm.
References blender::gpu::MTLContextGlobalShaderPipelineState::active_shader, blender::gpu::MTLContext::get(), and blender::gpu::MTLContext::pipeline_state.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 549 of file mtl_shader.mm.
References blender::gpu::MTLShaderUniform::array_len, BLI_assert, BLI_assert_msg, blender::gpu::MTLShaderUniform::byte_offset, float, get_interface(), blender::gpu::MTLShaderInterface::get_total_uniforms(), blender::gpu::MTLShaderInterface::get_uniform(), is_valid(), MTL_DATATYPE_FLOAT3, MTL_DATATYPE_FLOAT3x3, MTL_LOG_WARNING, blender::gpu::Shader::name_get(), push_constant_bindstate_mark_dirty(), shader_debug_printf, blender::gpu::MTLShaderUniform::size_in_bytes, and blender::gpu::MTLShaderUniform::type.
|
overridevirtual |
Determine size of data to copy.
Implements blender::gpu::Shader.
Definition at line 651 of file mtl_shader.mm.
References BLI_assert, BLI_assert_msg, blender::gpu::MTLShaderUniform::byte_offset, data, get_interface(), blender::gpu::MTLShaderInterface::get_total_textures(), blender::gpu::MTLShaderInterface::get_total_uniforms(), blender::gpu::MTLShaderInterface::get_uniform(), int, is_valid(), mtl_get_data_type_alignment(), MTL_LOG_WARNING, blender::gpu::Shader::name_get(), ptr, push_constant_bindstate_mark_dirty(), blender::gpu::MTLShaderUniform::size_in_bytes, and blender::gpu::MTLShaderUniform::type.
Referenced by blender::gpu::MTLBatch::bind(), blender::gpu::MTLImmediate::end(), blender::gpu::MTLContext::ensure_texture_bindings(), blender::gpu::MTLContext::ensure_texture_bindings(), and ssbo_vertex_fetch_bind_attribute().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 794 of file mtl_shader_generator.mm.
References blender::gpu::to_string(), and blender::gpu::shader::ShaderCreateInfo::vertex_inputs_.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 201 of file mtl_shader.mm.
References BLI_assert, blender::gpu::MTLShaderBuilder::glsl_vertex_source_, blender::MutableSpan< T >::size(), blender::gpu::MTLShaderBuilder::source_from_msl_, and SOURCES_INDEX_VERSION.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 736 of file mtl_shader.mm.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), bake_pipeline_state(), blender::gpu::MTLContext::get(), min_ii(), blender::gpu::Shader::parent_shader_, blender::gpu::MTLRenderPipelineStateInstance::prim_type, and blender::Vector< T, InlineBufferCapacity, Allocator >::size().
| int blender::gpu::MTLShader::uni_ssbo_index_base_loc = -1 |
Definition at line 178 of file mtl_shader.hh.
Referenced by blender::gpu::MTLBatch::bind(), and prepare_ssbo_vertex_fetch_metadata().
| int blender::gpu::MTLShader::uni_ssbo_input_prim_type_loc = -1 |
Definition at line 174 of file mtl_shader.hh.
Referenced by blender::gpu::MTLBatch::bind(), blender::gpu::MTLImmediate::end(), and prepare_ssbo_vertex_fetch_metadata().
| int blender::gpu::MTLShader::uni_ssbo_input_vert_count_loc = -1 |
Definition at line 175 of file mtl_shader.hh.
Referenced by blender::gpu::MTLBatch::bind(), blender::gpu::MTLImmediate::end(), and prepare_ssbo_vertex_fetch_metadata().
| int blender::gpu::MTLShader::uni_ssbo_uses_index_mode_u16 = -1 |
Definition at line 177 of file mtl_shader.hh.
Referenced by blender::gpu::MTLBatch::bind(), and prepare_ssbo_vertex_fetch_metadata().
| int blender::gpu::MTLShader::uni_ssbo_uses_indexed_rendering = -1 |
Definition at line 176 of file mtl_shader.hh.
Referenced by blender::gpu::MTLBatch::bind(), blender::gpu::MTLImmediate::end(), and prepare_ssbo_vertex_fetch_metadata().