|
Blender V4.3
|
#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 |
| struct blender::gpu::Shader::Constants | constants |
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 |
Definition at line 25 of file vk_shader.hh.
| blender::gpu::VKShader::VKShader | ( | const char * | name | ) |
Definition at line 493 of file vk_shader.cc.
References blender::gpu::VKContext::get(), blender::gpu::Shader::name, and blender::gpu::Shader::Shader().
|
virtual |
Definition at line 508 of file vk_shader.cc.
References blender::gpu::VKBackend::device, blender::gpu::VKDiscardPool::discard_pipeline_layout(), blender::gpu::VKDevice::discard_pool_for_current_thread(), blender::gpu::VKBackend::get(), and vk_pipeline_layout.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 734 of file vk_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1099 of file vk_shader.cc.
References blender::gpu::shader::ShaderCreateInfo::compute_layout_, 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.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 556 of file vk_shader.cc.
References compute_module.
| VkPipeline blender::gpu::VKShader::ensure_and_get_compute_pipeline | ( | ) |
Definition at line 1209 of file vk_shader.cc.
References BLI_assert, compute_module, blender::gpu::Shader::constants, blender::gpu::VKBackend::device, blender::Vector< T, InlineBufferCapacity, Allocator >::extend(), blender::gpu::VKBackend::get(), blender::gpu::VKPipelinePool::get_or_create_compute_pipeline(), blender::gpu::VKDevice::pipelines, blender::gpu::VKComputeInfo::specialization_constants, blender::gpu::VKComputeInfo::vk_pipeline_layout, vk_pipeline_layout, and blender::gpu::VKComputeInfo::vk_shader_module.
Referenced by 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 ) |
Definition at line 1236 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::Shader::constants, blender::gpu::VKGraphicsInfo::FragmentOut::depth_attachment_format, blender::gpu::VKFrameBuffer::depth_attachment_format_get(), blender::gpu::VKBackend::device, 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::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::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_get(), blender::gpu::VKGraphicsInfo::VertexIn::vk_topology, blender::gpu::VKGraphicsInfo::PreRasterization::vk_vertex_module, and blender::gpu::VKFrameBuffer::vk_viewports_get().
Referenced by blender::gpu::VKContext::update_pipeline_data().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 566 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, blender::gpu::VKShaderInterface::push_constants_layout_get(), and blender::gpu::VKDevice::vk_handle().
| bool blender::gpu::VKShader::finalize_post | ( | ) |
Definition at line 604 of file vk_shader.cc.
References compute_module, ensure_and_get_compute_pipeline(), fragment_module, geometry_module, result, and vertex_module.
Referenced by finalize().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 918 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::shader::ShaderCreateInfo::early_fragment_test_, blender::StringRefBase::find(), blender::gpu::shader::FLOAT, blender::gpu::shader::FLOAT_2D, blender::gpu::shader::FLOAT_2D_ARRAY, blender::gpu::shader::FLOAT_BUFFER, blender::gpu::shader::ShaderCreateInfo::fragment_outputs_, blender::gpu::VKWorkarounds::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(), blender::gpu::shader::ShaderCreateInfo::FragOut::index, blender::gpu::shader::INT, blender::gpu::shader::INT_2D, blender::gpu::shader::INT_2D_ARRAY, interface_get(), blender::StringRefBase::is_empty(), blender::gpu::shader::LAYER, blender::gpu::main_function_wrapper(), blender::gpu::shader::ShaderCreateInfo::FragOut::name, output, blender::gpu::print_interface(), blender::gpu::print_resource(), blender::gpu::VKWorkarounds::shader_output_layer, blender::gpu::VKWorkarounds::shader_output_viewport_index, blender::gpu::shader::SRC_0, blender::gpu::shader::SRC_1, blender::gpu::shader::ShaderCreateInfo::subpass_inputs_, blender::gpu::shader::to_component_count(), blender::gpu::to_component_type(), blender::gpu::to_string(), blender::gpu::shader::ShaderCreateInfo::FragOut::type, blender::gpu::shader::UINT, blender::gpu::shader::UINT_2D, blender::gpu::shader::UINT_2D_ARRAY, blender::gpu::shader::UNCHANGED, blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_, blender::gpu::shader::VIEWPORT_INDEX, and blender::gpu::VKDevice::workarounds_get().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 551 of file vk_shader.cc.
References fragment_module.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1033 of file vk_shader.cc.
References 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 blender::gpu::to_string().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1071 of file vk_shader.cc.
References blender::gpu::declare_emit_vertex(), blender::gpu::find_interface_by_name(), blender::gpu::shader::ShaderCreateInfo::geometry_out_interfaces_, blender::gpu::shader::StageInterfaceInfo::instance_name, blender::gpu::print_interface(), and blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 546 of file vk_shader.cc.
References geometry_module.
Referenced by finalize().
|
inlineoverridevirtual |
Implements blender::gpu::Shader.
Definition at line 102 of file vk_shader.hh.
|
inlineoverridevirtual |
Implements blender::gpu::Shader.
Definition at line 98 of file vk_shader.hh.
|
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 123 of file vk_shader.hh.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 498 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 1290 of file vk_shader.cc.
References BLI_assert_msg, and blender::gpu::Shader::interface.
Referenced by ensure_and_get_graphics_pipeline(), finalize(), fragment_interface_declare(), 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 652 of file vk_shader.cc.
References compilation_finished.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1285 of file vk_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 752 of file vk_shader.cc.
References ShaderCreateInfo::PushConst::array_size, blender::gpu::shader::ShaderCreateInfo::batch_resources_, BLI_assert_unreachable, blender::gpu::shader::BOOL, blender::gpu::VKPushConstants::Layout::descriptor_set_location_get(), blender::gpu::shader::FLOAT, blender::gpu::shader::ShaderCreateInfo::geometry_resources_, blender::gpu::shader::SpecializationConstant::Value::i, blender::gpu::shader::INT, 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, blender::gpu::VKPushConstants::UNIFORM_BUFFER, and blender::gpu::shader::SpecializationConstant::value.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 727 of file vk_shader.cc.
References BLI_assert_unreachable.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 722 of file vk_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 716 of file vk_shader.cc.
References BLI_assert_unreachable.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 740 of file vk_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 742 of file vk_shader.cc.
References data, and push_constants.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 747 of file vk_shader.cc.
References data, and push_constants.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 829 of file vk_shader.cc.
References blender::gpu::shader::ShaderCreateInfo::builtins_, blender::gpu::VKBackend::device, blender::gpu::shader::ShaderCreateInfo::geometry_source_, blender::gpu::VKBackend::get(), 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::VKWorkarounds::shader_output_layer, blender::gpu::VKWorkarounds::shader_output_viewport_index, blender::gpu::to_string(), ShaderCreateInfo::VertIn::type, blender::gpu::shader::ShaderCreateInfo::vertex_inputs_, blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_, blender::gpu::shader::VIEWPORT_INDEX, and blender::gpu::VKDevice::workarounds_get().
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 541 of file vk_shader.cc.
References vertex_module.
|
inline |
Definition at line 128 of file vk_shader.hh.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 561 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().