Blender V4.3
GPUCodegenCreateInfo Struct Reference

Inherits blender::gpu::shader::ShaderCreateInfo.

Classes

struct  NameBuffer

Public Member Functions

 GPUCodegenCreateInfo (const char *name)
 ~GPUCodegenCreateInfo ()
Public Member Functions inherited from blender::gpu::shader::ShaderCreateInfo
Vector< Resource > & resources_get_ (Frequency freq)
Vector< Resourceresources_get_all_ () const
 ShaderCreateInfo (const char *name)
 ~ShaderCreateInfo ()
Selfvertex_in (int slot, Type type, StringRefNull name)
Selfvertex_out (StageInterfaceInfo &interface)
Selfgeometry_layout (PrimitiveIn prim_in, PrimitiveOut prim_out, int max_vertices, int invocations=-1)
Selflocal_group_size (int local_size_x=-1, int local_size_y=-1, int local_size_z=-1)
Selfearly_fragment_test (bool enable)
Selfgeometry_out (StageInterfaceInfo &interface)
Selffragment_out (int slot, Type type, StringRefNull name, DualBlend blend=DualBlend::NONE, int raster_order_group=-1)
Selfsubpass_in (int slot, Type type, StringRefNull name, int raster_order_group=-1)
Selfspecialization_constant (Type type, StringRefNull name, double default_value)
Selfuniform_buf (int slot, StringRefNull type_name, StringRefNull name, Frequency freq=Frequency::PASS)
Selfstorage_buf (int slot, Qualifier qualifiers, StringRefNull type_name, StringRefNull name, Frequency freq=Frequency::PASS)
Selfimage (int slot, eGPUTextureFormat format, Qualifier qualifiers, ImageType type, StringRefNull name, Frequency freq=Frequency::PASS)
Selfsampler (int slot, ImageType type, StringRefNull name, Frequency freq=Frequency::PASS, GPUSamplerState sampler=GPUSamplerState::internal_sampler())
Selfvertex_source (StringRefNull filename)
Selfgeometry_source (StringRefNull filename)
Selffragment_source (StringRefNull filename)
Selfcompute_source (StringRefNull filename)
Selfpush_constant (Type type, StringRefNull name, int array_size=0)
Selfdefine (StringRefNull name, StringRefNull value="")
Selfdo_static_compilation (bool value)
Selfbuiltins (BuiltinBits builtin)
Selfdepth_write (DepthWrite value)
Selfauto_resource_location (bool value)
Selflegacy_resource_location (bool value)
Selfmetal_backend_only (bool flag)
Selfadditional_info (StringRefNull info_name)
template<typename... Args>
Selfadditional_info (StringRefNull info_name, Args... args)
Selftypedef_source (StringRefNull filename)
Selftransform_feedback_mode (eGPUShaderTFBType tf_mode)
Selftransform_feedback_output_name (const char *name)
Selfmtl_max_total_threads_per_threadgroup (ushort max_total_threads_per_threadgroup)
void finalize (const bool recursive=false)
std::string check_error () const
bool is_vulkan_compatible () const
void validate_merge (const ShaderCreateInfo &other_info)
void validate_vertex_attributes (const ShaderCreateInfo *other_info=nullptr)
bool operator== (const ShaderCreateInfo &b) const
bool has_resource_type (Resource::BindType bind_type) const
bool has_resource_image () const

Public Attributes

StageInterfaceInfointerface_generated = nullptr
NameBuffer name_buffer
Public Attributes inherited from blender::gpu::shader::ShaderCreateInfo
StringRefNull name_
bool do_static_compilation_ = false
bool finalized_ = false
bool auto_resource_location_ = false
bool early_fragment_test_ = false
bool legacy_resource_location_ = false
DepthWrite depth_write_ = DepthWrite::UNCHANGED
bool metal_backend_only_ = false
size_t interface_names_size_ = 0
BuiltinBits builtins_ = BuiltinBits::NONE
std::string vertex_source_generated = ""
std::string fragment_source_generated = ""
std::string compute_source_generated = ""
std::string geometry_source_generated = ""
std::string typedef_source_generated = ""
Vector< const char *, 0 > dependencies_generated
Vector< VertInvertex_inputs_
GeometryStageLayout geometry_layout_
ComputeStageLayout compute_layout_
Vector< FragOutfragment_outputs_
Vector< SubpassInsubpass_inputs_
Vector< SpecializationConstantspecialization_constants_
Vector< Resourcepass_resources_
Vector< Resourcebatch_resources_
Vector< Resourcegeometry_resources_
Vector< StageInterfaceInfo * > vertex_out_interfaces_
Vector< StageInterfaceInfo * > geometry_out_interfaces_
Vector< PushConstpush_constants_
Vector< StringRefNulltypedef_sources_
StringRefNull vertex_source_
StringRefNull geometry_source_
StringRefNull fragment_source_
StringRefNull compute_source_
Vector< std::array< StringRefNull, 2 > > defines_
Vector< StringRefNulladditional_infos_
eGPUShaderTFBType tf_type_ = GPU_SHADER_TFB_NONE
Vector< const char * > tf_names_

Additional Inherited Members

Public Types inherited from blender::gpu::shader::ShaderCreateInfo
using SubpassIn = FragOut
using Self = ShaderCreateInfo

Detailed Description

IMPORTANT: Never add external reference. The GPUMaterial used to create the GPUPass (and its GPUCodegenCreateInfo) can be free before actually compiling. This happens if there is an update before deferred compilation happens and the GPUPass gets picked up by another GPUMaterial (because of GPUPass reuse).

Definition at line 58 of file gpu_codegen.cc.

Constructor & Destructor Documentation

◆ GPUCodegenCreateInfo()

GPUCodegenCreateInfo::GPUCodegenCreateInfo ( const char * name)
inline

◆ ~GPUCodegenCreateInfo()

GPUCodegenCreateInfo::~GPUCodegenCreateInfo ( )
inline

Definition at line 84 of file gpu_codegen.cc.

References interface_generated.

Member Data Documentation

◆ interface_generated

StageInterfaceInfo* GPUCodegenCreateInfo::interface_generated = nullptr

Optional generated interface.

Definition at line 79 of file gpu_codegen.cc.

Referenced by GPUCodegen::generate_attribs(), and ~GPUCodegenCreateInfo().

◆ name_buffer

NameBuffer GPUCodegenCreateInfo::name_buffer

Optional name buffer containing names referenced by StringRefNull.

Definition at line 81 of file gpu_codegen.cc.

Referenced by GPUCodegenCreateInfo::NameBuffer::append_sampler_name(), GPUCodegen::generate_attribs(), and GPUCodegen::generate_resources().


The documentation for this struct was generated from the following file: