Struct vulkano::shader::ShaderModule
source · pub struct ShaderModule { /* private fields */ }
Expand description
Contains SPIR-V code with one or more entry points.
Implementations§
source§impl ShaderModule
impl ShaderModule
sourcepub unsafe fn new(
device: Arc<Device>,
create_info: ShaderModuleCreateInfo<'_>
) -> Result<Arc<ShaderModule>, Validated<VulkanError>>
pub unsafe fn new( device: Arc<Device>, create_info: ShaderModuleCreateInfo<'_> ) -> Result<Arc<ShaderModule>, Validated<VulkanError>>
sourcepub unsafe fn from_handle(
device: Arc<Device>,
handle: ShaderModule,
create_info: ShaderModuleCreateInfo<'_>
) -> Arc<ShaderModule>
pub unsafe fn from_handle( device: Arc<Device>, handle: ShaderModule, create_info: ShaderModuleCreateInfo<'_> ) -> Arc<ShaderModule>
Creates a new ShaderModule
from a raw object handle.
Safety
handle
must be a valid Vulkan object handle created fromdevice
.create_info
must match the info used to create the object.
sourcepub unsafe fn from_words(
device: Arc<Device>,
words: &[u32]
) -> Result<Arc<ShaderModule>, Validated<VulkanError>>
👎Deprecated since 0.34.0: use new
instead
pub unsafe fn from_words( device: Arc<Device>, words: &[u32] ) -> Result<Arc<ShaderModule>, Validated<VulkanError>>
new
insteadBuilds a new shader module from SPIR-V 32-bit words. The shader code is parsed and the necessary information is extracted from it.
Safety
- The SPIR-V code is not validated beyond the minimum needed to extract the information.
sourcepub unsafe fn from_bytes(
device: Arc<Device>,
bytes: &[u8]
) -> Result<Arc<ShaderModule>, Validated<VulkanError>>
👎Deprecated since 0.34.0: use shader::spirv::bytes_to_words
, and then use new
instead
pub unsafe fn from_bytes( device: Arc<Device>, bytes: &[u8] ) -> Result<Arc<ShaderModule>, Validated<VulkanError>>
shader::spirv::bytes_to_words
, and then use new
insteadAs from_words
, but takes a slice of bytes.
Panics
- Panics if
bytes
is not aligned to 4. - Panics if the length of
bytes
is not a multiple of 4.
sourcepub fn specialization_constants(&self) -> &HashMap<u32, SpecializationConstant>
pub fn specialization_constants(&self) -> &HashMap<u32, SpecializationConstant>
Returns the specialization constants that are defined in the module, along with their default values.
Specialization constants are constants whose value can be overridden when you create
a pipeline. They are indexed by their constant_id
.
sourcepub fn specialize(
self: &Arc<Self>,
specialization_info: HashMap<u32, SpecializationConstant>
) -> Result<Arc<SpecializedShaderModule>, Box<ValidationError>>
pub fn specialize( self: &Arc<Self>, specialization_info: HashMap<u32, SpecializationConstant> ) -> Result<Arc<SpecializedShaderModule>, Box<ValidationError>>
Applies the specialization constants to the shader module, and returns a specialized version of the module.
Constants that are not given a value here will have the default value that was specified
for them in the shader code.
When provided, they must have the same type as defined in the shader (as returned by
specialization_constants
).
sourcepub fn entry_point(self: &Arc<Self>, name: &str) -> Option<EntryPoint>
pub fn entry_point(self: &Arc<Self>, name: &str) -> Option<EntryPoint>
Equivalent to calling specialize
with empty specialization info,
and then calling SpecializedShaderModule::entry_point
.
sourcepub fn entry_point_with_execution(
self: &Arc<Self>,
name: &str,
execution: ExecutionModel
) -> Option<EntryPoint>
pub fn entry_point_with_execution( self: &Arc<Self>, name: &str, execution: ExecutionModel ) -> Option<EntryPoint>
Equivalent to calling specialize
with empty specialization info,
and then calling SpecializedShaderModule::entry_point_with_execution
.
sourcepub fn single_entry_point(self: &Arc<Self>) -> Option<EntryPoint>
pub fn single_entry_point(self: &Arc<Self>) -> Option<EntryPoint>
Equivalent to calling specialize
with empty specialization info,
and then calling SpecializedShaderModule::single_entry_point
.
sourcepub fn single_entry_point_with_execution(
self: &Arc<Self>,
execution: ExecutionModel
) -> Option<EntryPoint>
pub fn single_entry_point_with_execution( self: &Arc<Self>, execution: ExecutionModel ) -> Option<EntryPoint>
Equivalent to calling specialize
with empty specialization info,
and then calling SpecializedShaderModule::single_entry_point_with_execution
.