|
Blender V5.0
|
#include <vk_shader.hh>
Inherits blender::gpu::Shader.
Public Attributes | |
| VKShaderModule | vertex_module |
| VKShaderModule | geometry_module |
| VKShaderModule | fragment_module |
| VKShaderModule | compute_module |
| bool | compilation_finished = false |
| bool | compilation_failed = false |
| VkPipelineLayout | vk_pipeline_layout = VK_NULL_HANDLE |
| VKPushConstants | push_constants |
| Public Attributes inherited from blender::gpu::Shader | |
| ShaderInterface * | interface = nullptr |
| uint16_t | fragment_output_bits = 0 |
| std::unique_ptr< const shader::SpecializationConstants > | constants |
| bool | is_polyline = false |
Additional Inherited Members | |
| Static Public Member Functions inherited from blender::gpu::Shader | |
| static void | set_scene_linear_to_xyz_uniform (gpu::Shader *shader) |
| static void | set_srgb_uniform (Context *ctx, gpu::Shader *shader) |
| static void | set_framebuffer_srgb_target (int use_srgb_to_linear) |
| Protected Member Functions inherited from blender::gpu::Shader | |
| void | print_log (Span< StringRefNull > 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 |
Definition at line 25 of file vk_shader.hh.
| blender::gpu::VKShader::VKShader | ( | const char * | name | ) |
Definition at line 491 of file vk_shader.cc.
References blender::gpu::VKContext::get(), blender::gpu::Shader::name, and blender::gpu::Shader::Shader().
|
virtual |
Definition at line 506 of file vk_shader.cc.
References blender::gpu::VKBackend::device, blender::gpu::VKPipelinePool::discard(), blender::gpu::VKDiscardPool::discard_pipeline_layout(), blender::gpu::VKDiscardPool::discard_pool_get(), blender::gpu::VKBackend::get(), blender::gpu::VKDevice::pipelines, and vk_pipeline_layout.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 723 of file vk_shader.cc.
References blender::gpu::VKContext::get(), and blender::gpu::VKContext::specialization_constants_set().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1157 of file vk_shader.cc.
References blender::gpu::shader::ShaderCreateInfo::compute_layout_, compute_layout_declare(), blender::gpu::shader::ShaderCreateInfo::ComputeStageLayout::local_size_x, blender::gpu::shader::ShaderCreateInfo::ComputeStageLayout::local_size_y, and blender::gpu::shader::ShaderCreateInfo::ComputeStageLayout::local_size_z.
Referenced by compute_layout_declare().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 569 of file vk_shader.cc.
References compute_module.
| VkPipeline blender::gpu::VKShader::ensure_and_get_compute_pipeline | ( | const shader::SpecializationConstants & | constants_state | ) |
Definition at line 1262 of file vk_shader.cc.
References BLI_assert, compute_module, ensure_and_get_compute_pipeline(), blender::Vector< T, InlineBufferCapacity, Allocator >::extend(), blender::gpu::VKBackend::get(), blender::gpu::VKPipelinePool::get_or_create_compute_pipeline(), blender::gpu::Shader::name_get(), blender::gpu::debug::object_label(), blender::gpu::VKDevice::pipelines, blender::gpu::VKComputeInfo::specialization_constants, blender::gpu::shader::SpecializationConstants::values, blender::gpu::VKComputeInfo::vk_pipeline_layout, vk_pipeline_layout, and blender::gpu::VKComputeInfo::vk_shader_module.
Referenced by ensure_and_get_compute_pipeline(), finalize_post(), and blender::gpu::VKContext::update_pipeline_data().
| VkPipeline blender::gpu::VKShader::ensure_and_get_graphics_pipeline | ( | GPUPrimType | primitive, |
| VKVertexAttributeObject & | vao, | ||
| VKStateManager & | state_manager, | ||
| VKFrameBuffer & | framebuffer, | ||
| shader::SpecializationConstants & | constants_state ) |
Definition at line 1291 of file vk_shader.cc.
References blender::gpu::VKGraphicsInfo::VertexIn::attributes, blender::gpu::VKVertexAttributeObject::attributes, blender::gpu::VKGraphicsInfo::VertexIn::bindings, blender::gpu::VKVertexAttributeObject::bindings, BLI_assert, BLI_assert_msg, Vector< T, InlineBufferCapacity, Allocator >::clear(), blender::gpu::VKGraphicsInfo::FragmentOut::color_attachment_formats, blender::gpu::VKFrameBuffer::color_attachment_formats_get(), blender::gpu::VKFrameBuffer::color_attachment_size, blender::gpu::VKGraphicsInfo::FragmentOut::color_attachment_size, blender::gpu::VKGraphicsInfo::FragmentOut::depth_attachment_format, blender::gpu::VKFrameBuffer::depth_attachment_format_get(), ensure_and_get_graphics_pipeline(), blender::Vector< T, InlineBufferCapacity, Allocator >::extend(), Vector< T, InlineBufferCapacity, Allocator >::extend(), fragment_module, blender::gpu::VKGraphicsInfo::fragment_out, blender::gpu::VKGraphicsInfo::fragment_shader, geometry_module, blender::gpu::VKBackend::get(), blender::gpu::VKPipelinePool::get_or_create_graphics_pipeline(), GPU_PRIM_POINTS, interface_get, blender::gpu::StateManager::mutable_state, blender::gpu::VKGraphicsInfo::mutable_state, blender::gpu::Shader::name_get(), blender::gpu::debug::object_label(), blender::gpu::VKDevice::pipelines, blender::gpu::VKGraphicsInfo::pre_rasterization, blender::gpu::VKGraphicsInfo::FragmentShader::scissors, blender::gpu::VKGraphicsInfo::specialization_constants, blender::gpu::StateManager::state, blender::gpu::VKGraphicsInfo::state, blender::gpu::VKGraphicsInfo::FragmentOut::stencil_attachment_format, blender::gpu::VKFrameBuffer::stencil_attachment_format_get(), blender::gpu::to_vk_primitive_topology(), blender::gpu::shader::SpecializationConstants::values, blender::gpu::VKGraphicsInfo::vertex_in, vertex_module, blender::gpu::VKGraphicsInfo::FragmentShader::viewports, blender::gpu::VKGraphicsInfo::FragmentShader::vk_fragment_module, blender::gpu::VKGraphicsInfo::PreRasterization::vk_geometry_module, blender::gpu::VKGraphicsInfo::vk_pipeline_layout, vk_pipeline_layout, blender::gpu::VKFrameBuffer::vk_render_areas_append(), blender::gpu::VKGraphicsInfo::VertexIn::vk_topology, blender::gpu::VKGraphicsInfo::PreRasterization::vk_vertex_module, and blender::gpu::VKFrameBuffer::vk_viewports_append().
Referenced by ensure_and_get_graphics_pipeline(), and blender::gpu::VKContext::update_pipeline_data().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 579 of file vk_shader.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), compilation_failed, compilation_finished, blender::gpu::VKBackend::device, finalize_post(), geometry_shader_from_glsl(), blender::gpu::VKBackend::get(), interface_get(), push_constants, and blender::gpu::VKShaderInterface::push_constants_layout_get().
| bool blender::gpu::VKShader::finalize_post | ( | ) |
Definition at line 617 of file vk_shader.cc.
References compute_module, blender::gpu::Shader::constants, ensure_and_get_compute_pipeline(), fragment_module, geometry_module, result, and vertex_module.
Referenced by finalize().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 945 of file vk_shader.cc.
References blender::gpu::shader::BARYCENTRIC_COORD, blender::gpu::shader::ShaderCreateInfo::builtins_, GPUSamplerState::default_sampler(), blender::gpu::shader::ShaderCreateInfo::depth_write_, blender::gpu::VKBackend::device, blender::gpu::VKExtensions::dynamic_rendering_local_read, blender::gpu::shader::ShaderCreateInfo::early_fragment_test_, ELEM, blender::gpu::VKDevice::extensions_get(), blender::StringRefBase::find(), blender::gpu::shader::ShaderCreateInfo::fragment_outputs_, blender::gpu::VKExtensions::fragment_shader_barycentric, blender::gpu::shader::ShaderCreateInfo::fragment_source_, blender::gpu::shader::ShaderCreateInfo::geometry_out_interfaces_, blender::gpu::shader::ShaderCreateInfo::geometry_source_, blender::gpu::VKBackend::get(), input, blender::gpu::shader::int_t, blender::gpu::Shader::interface, interface_get(), blender::StringRefBase::is_empty(), blender::gpu::shader::LAYER, output, blender::gpu::print_interface(), blender::gpu::print_resource(), blender::gpu::shader::ShaderCreateInfo::subpass_inputs_, blender::gpu::shader::to_component_count(), blender::gpu::to_component_type(), blender::gpu::to_string(), blender::gpu::shader::uint_t, blender::gpu::shader::UNCHANGED, blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_, and blender::gpu::shader::VIEWPORT_INDEX.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 564 of file vk_shader.cc.
References fragment_module.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1091 of file vk_shader.cc.
References geometry_interface_declare(), blender::gpu::shader::ShaderCreateInfo::geometry_layout_, blender::gpu::shader::ShaderCreateInfo::GeometryStageLayout::invocations, blender::gpu::shader::ShaderCreateInfo::GeometryStageLayout::max_vertices, blender::gpu::shader::ShaderCreateInfo::GeometryStageLayout::primitive_in, blender::gpu::shader::ShaderCreateInfo::GeometryStageLayout::primitive_out, and to_string().
Referenced by geometry_interface_declare().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1129 of file vk_shader.cc.
References blender::gpu::declare_emit_vertex(), find_interface_by_name(), geometry_layout_declare(), blender::gpu::shader::ShaderCreateInfo::geometry_out_interfaces_, blender::gpu::shader::StageInterfaceInfo::instance_name, print_interface(), and blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_.
Referenced by geometry_layout_declare().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 559 of file vk_shader.cc.
References geometry_module.
Referenced by finalize().
|
inline |
Some shaders don't have a descriptor set and should not bind any descriptor set to the pipeline. This function can be used to determine if a descriptor set can be bound when this shader or one of its pipelines are active.
Definition at line 107 of file vk_shader.hh.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 496 of file vk_shader.cc.
References blender::gpu::shader::ShaderCreateInfo::compute_source_, blender::gpu::shader::ShaderCreateInfo::compute_source_generated, blender::gpu::shader::ShaderCreateInfo::do_static_compilation_, blender::gpu::VKShaderInterface::init(), and blender::StringRefBase::is_empty().
| const VKShaderInterface & blender::gpu::VKShader::interface_get | ( | ) | const |
Definition at line 1342 of file vk_shader.cc.
References BLI_assert_msg, blender::gpu::Shader::interface, and interface_get().
Referenced by finalize(), fragment_interface_declare(), interface_get(), and resources_declare().
| bool blender::gpu::VKShader::is_ready | ( | ) | const |
Check if needed compilation steps have been finished.
Returns true when all modules that needed compilation have finished their compilation steps. Compilations with errors are still considered finished. Returns false when compilation is still needed for one of the shader modules.
Definition at line 666 of file vk_shader.cc.
References compilation_finished.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 745 of file vk_shader.cc.
References ShaderCreateInfo::PushConst::array_size, blender::gpu::shader::ShaderCreateInfo::batch_resources_, BLI_assert_unreachable, blender::gpu::shader::bool_t, blender::gpu::shader::ShaderCreateInfo::compilation_constants_, blender::gpu::VKPushConstants::Layout::descriptor_set_location_get(), blender::gpu::shader::float_t, blender::gpu::shader::ShaderCreateInfo::geometry_resources_, blender::gpu::shader::SpecializationConstant::Value::i, blender::gpu::shader::int_t, interface_get(), blender::gpu::shader::SpecializationConstant::name, ShaderCreateInfo::PushConst::name, ShaderCreateInfo::SharedVariable::name, blender::gpu::VKPushConstants::NONE, blender::gpu::shader::ShaderCreateInfo::pass_resources_, blender::gpu::print_resource(), blender::gpu::VKPushConstants::PUSH_CONSTANTS, blender::gpu::shader::ShaderCreateInfo::push_constants_, blender::gpu::VKShaderInterface::push_constants_layout_get(), blender::gpu::shader::ShaderCreateInfo::shared_variables_, blender::gpu::shader::ShaderCreateInfo::specialization_constants_, blender::gpu::VKPushConstants::Layout::storage_type_get(), blender::gpu::to_string(), blender::gpu::shader::SpecializationConstant::type, ShaderCreateInfo::PushConst::type, ShaderCreateInfo::SharedVariable::type, blender::gpu::shader::SpecializationConstant::Value::u, blender::gpu::shader::uint_t, blender::gpu::VKPushConstants::UNIFORM_BUFFER, and blender::gpu::shader::SpecializationConstant::value.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 733 of file vk_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 735 of file vk_shader.cc.
References data, and push_constants.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 740 of file vk_shader.cc.
References data, and push_constants.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 846 of file vk_shader.cc.
References blender::gpu::shader::ShaderCreateInfo::builtins_, blender::gpu::shader::ShaderCreateInfo::geometry_source_, ShaderCreateInfo::VertIn::index, blender::StringRefBase::is_empty(), blender::gpu::shader::LAYER, blender::gpu::main_function_wrapper(), ShaderCreateInfo::VertIn::name, blender::gpu::print_interface(), blender::gpu::to_string(), ShaderCreateInfo::VertIn::type, blender::gpu::shader::ShaderCreateInfo::vertex_inputs_, blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_, and blender::gpu::shader::VIEWPORT_INDEX.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 554 of file vk_shader.cc.
References vertex_module.
|
inline |
Definition at line 112 of file vk_shader.hh.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 574 of file vk_shader.cc.
References NOT_YET_IMPLEMENTED.
| bool blender::gpu::VKShader::compilation_failed = false |
Definition at line 52 of file vk_shader.hh.
Referenced by finalize().
| bool blender::gpu::VKShader::compilation_finished = false |
Definition at line 51 of file vk_shader.hh.
Referenced by finalize(), and is_ready().
| VKShaderModule blender::gpu::VKShader::compute_module |
Definition at line 50 of file vk_shader.hh.
Referenced by compute_shader_from_glsl(), ensure_and_get_compute_pipeline(), and finalize_post().
| VKShaderModule blender::gpu::VKShader::fragment_module |
Definition at line 49 of file vk_shader.hh.
Referenced by ensure_and_get_graphics_pipeline(), finalize_post(), and fragment_shader_from_glsl().
| VKShaderModule blender::gpu::VKShader::geometry_module |
Definition at line 48 of file vk_shader.hh.
Referenced by ensure_and_get_graphics_pipeline(), finalize_post(), and geometry_shader_from_glsl().
| VKPushConstants blender::gpu::VKShader::push_constants |
Definition at line 55 of file vk_shader.hh.
Referenced by finalize(), uniform_float(), and uniform_int().
| VKShaderModule blender::gpu::VKShader::vertex_module |
Definition at line 47 of file vk_shader.hh.
Referenced by ensure_and_get_graphics_pipeline(), finalize_post(), and vertex_shader_from_glsl().
| VkPipelineLayout blender::gpu::VKShader::vk_pipeline_layout = VK_NULL_HANDLE |
Definition at line 54 of file vk_shader.hh.
Referenced by ensure_and_get_compute_pipeline(), ensure_and_get_graphics_pipeline(), and ~VKShader().