|
Blender V4.5
|
#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_srgb_uniform (Context *ctx, 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< 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 505 of file vk_shader.cc.
References blender::gpu::VKContext::get(), blender::gpu::Shader::name, and blender::gpu::Shader::Shader().
|
virtual |
Definition at line 520 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 737 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 1214 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 583 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 1319 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 1348 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::VKFrameBuffer::vk_render_pass, blender::gpu::VKGraphicsInfo::FragmentOut::vk_render_pass, 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 593 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 631 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 954 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, 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::float_t, 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 578 of file vk_shader.cc.
References fragment_module.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1148 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 1186 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 573 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 108 of file vk_shader.hh.
|
inlineoverridevirtual |
Implements blender::gpu::Shader.
Definition at line 61 of file vk_shader.hh.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 510 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 1400 of file vk_shader.cc.
References BLI_assert_msg, blender::gpu::Shader::interface, and interface_get().
Referenced by ensure_and_get_graphics_pipeline(), 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 680 of file vk_shader.cc.
References compilation_finished.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 759 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, 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::specialization_constants_, blender::gpu::VKPushConstants::Layout::storage_type_get(), blender::gpu::to_string(), blender::gpu::shader::SpecializationConstant::type, ShaderCreateInfo::PushConst::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 747 of file vk_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 749 of file vk_shader.cc.
References data, and push_constants.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 754 of file vk_shader.cc.
References data, and push_constants.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 855 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 568 of file vk_shader.cc.
References vertex_module.
|
inline |
Definition at line 113 of file vk_shader.hh.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 588 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().