|
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().
|
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 729 of file vk_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1094 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 1204 of file vk_shader.cc.
References BLI_assert, compute_module, blender::gpu::Shader::constants, blender::gpu::VKBackend::device, blender::gpu::VKBackend::get(), blender::gpu::VKPipelinePool::get_or_create_compute_pipeline(), blender::gpu::VKDevice::pipelines, blender::gpu::VKComputeInfo::specialization_constants, blender::gpu::Shader::Constants::values, blender::gpu::VKComputeInfo::vk_pipeline_layout, vk_pipeline_layout, blender::gpu::VKComputeInfo::vk_shader_module, and blender::gpu::VKShaderModule::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 1231 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, blender::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(), 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::Shader::Constants::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_get(), blender::gpu::VKShaderModule::vk_shader_module, 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 599 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 913 of file vk_shader.cc.
References 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::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(), interface_get(), blender::StringRefBase::is_empty(), blender::gpu::main_function_wrapper(), blender::gpu::print_interface(), blender::gpu::print_resource(), blender::gpu::VKWorkarounds::shader_output_layer, blender::gpu::VKWorkarounds::shader_output_viewport_index, 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::vertex_out_interfaces_, 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 1028 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 1066 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::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 1285 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 647 of file vk_shader.cc.
References compilation_finished.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 1280 of file vk_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 747 of file vk_shader.cc.
References blender::gpu::shader::ShaderCreateInfo::batch_resources_, BLI_assert_unreachable, blender::gpu::VKPushConstants::Layout::descriptor_set_location_get(), blender::gpu::shader::ShaderCreateInfo::geometry_resources_, interface_get(), 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(), and blender::gpu::VKPushConstants::UNIFORM_BUFFER.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 722 of file vk_shader.cc.
References BLI_assert_unreachable.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 717 of file vk_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 711 of file vk_shader.cc.
References BLI_assert_unreachable.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 735 of file vk_shader.cc.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 737 of file vk_shader.cc.
References blender::gpu::VKPushConstants::push_constant_set(), and push_constants.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 742 of file vk_shader.cc.
References blender::gpu::VKPushConstants::push_constant_set(), and push_constants.
|
overridevirtual |
Implements blender::gpu::Shader.
Definition at line 824 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(), blender::StringRefBase::is_empty(), blender::gpu::main_function_wrapper(), blender::gpu::print_interface(), blender::gpu::VKWorkarounds::shader_output_layer, blender::gpu::VKWorkarounds::shader_output_viewport_index, blender::gpu::to_string(), blender::gpu::shader::ShaderCreateInfo::vertex_inputs_, blender::gpu::shader::ShaderCreateInfo::vertex_out_interfaces_, 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().