pub struct ShaderModule { /* private fields */ }
Expand description

Contains SPIR-V code with one or more entry points.

Implementations§

source§

impl ShaderModule

source

pub unsafe fn new( device: Arc<Device>, create_info: ShaderModuleCreateInfo<'_> ) -> Result<Arc<ShaderModule>, Validated<VulkanError>>

Creates a new shader module.

Safety
  • The SPIR-V code in create_info.code must be valid.
source

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 from device.
  • create_info must match the info used to create the object.
source

pub unsafe fn from_words( device: Arc<Device>, words: &[u32] ) -> Result<Arc<ShaderModule>, Validated<VulkanError>>

👎Deprecated since 0.34.0: use new instead

Builds 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.
source

pub 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

As 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.
source

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.

source

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).

source

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.

source

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.

source

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.

source

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.

Trait Implementations§

source§

impl Debug for ShaderModule

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl DeviceOwned for ShaderModule

source§

fn device(&self) -> &Arc<Device>

Returns the device that owns self.
source§

impl Drop for ShaderModule

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl Hash for ShaderModule

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for ShaderModule

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl VulkanObject for ShaderModule

§

type Handle = ShaderModule

The type of the object.
source§

fn handle(&self) -> Self::Handle

Returns the raw Vulkan handle of the object.
source§

impl Eq for ShaderModule

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> DeviceOwnedVulkanObject for Twhere T: DeviceOwned + VulkanObject,

source§

fn set_debug_utils_object_name( &self, object_name: Option<&str> ) -> Result<(), VulkanError>

Assigns a human-readable name to the object for debugging purposes. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.