Struct vulkano::pipeline::shader::ShaderModule
[−]
[src]
pub struct ShaderModule<P = Arc<Device>> where
P: SafeDeref<Target = Device>, { /* fields omitted */ }
Contains SPIR-V code with one or more entry points.
Note that it is advised to wrap around a ShaderModule
with a struct that is different for
each shader.
Methods
impl<P> ShaderModule<P> where
P: SafeDeref<Target = Device>,
[src]
P: SafeDeref<Target = Device>,
unsafe fn new(device: P, spirv: &[u8]) -> Result<Arc<ShaderModule<P>>, OomError>
Builds a new shader module from SPIR-V.
Safety
- The SPIR-V code is not validated.
- The SPIR-V code may require some features that are not enabled. This isn't checked by this function either.
unsafe fn vertex_shader_entry_point<'a, S, I, O, L>(
&'a self,
name: &'a CStr,
input: I,
output: O,
layout: L
) -> VertexShaderEntryPoint<'a, S, I, O, L, P>
&'a self,
name: &'a CStr,
input: I,
output: O,
layout: L
) -> VertexShaderEntryPoint<'a, S, I, O, L, P>
Gets access to an entry point contained in this module.
This is purely a logical operation. It returns a struct that represents the entry point but doesn't actually do anything.
Safety
- The user must check that the entry point exists in the module, as this is not checked by Vulkan.
- The input, output and layout must correctly describe the input, output and layout used by this stage.
unsafe fn tess_control_shader_entry_point<'a, S, I, O, L>(
&'a self,
name: &'a CStr,
input: I,
output: O,
layout: L
) -> TessControlShaderEntryPoint<'a, S, I, O, L, P>
&'a self,
name: &'a CStr,
input: I,
output: O,
layout: L
) -> TessControlShaderEntryPoint<'a, S, I, O, L, P>
Gets access to an entry point contained in this module.
This is purely a logical operation. It returns a struct that represents the entry point but doesn't actually do anything.
Safety
- The user must check that the entry point exists in the module, as this is not checked by Vulkan.
- The input, output and layout must correctly describe the input, output and layout used by this stage.
unsafe fn tess_evaluation_shader_entry_point<'a, S, I, O, L>(
&'a self,
name: &'a CStr,
input: I,
output: O,
layout: L
) -> TessEvaluationShaderEntryPoint<'a, S, I, O, L, P>
&'a self,
name: &'a CStr,
input: I,
output: O,
layout: L
) -> TessEvaluationShaderEntryPoint<'a, S, I, O, L, P>
Gets access to an entry point contained in this module.
This is purely a logical operation. It returns a struct that represents the entry point but doesn't actually do anything.
Safety
- The user must check that the entry point exists in the module, as this is not checked by Vulkan.
- The input, output and layout must correctly describe the input, output and layout used by this stage.
unsafe fn geometry_shader_entry_point<'a, S, I, O, L>(
&'a self,
name: &'a CStr,
primitives: GeometryShaderExecutionMode,
input: I,
output: O,
layout: L
) -> GeometryShaderEntryPoint<'a, S, I, O, L, P>
&'a self,
name: &'a CStr,
primitives: GeometryShaderExecutionMode,
input: I,
output: O,
layout: L
) -> GeometryShaderEntryPoint<'a, S, I, O, L, P>
Gets access to an entry point contained in this module.
This is purely a logical operation. It returns a struct that represents the entry point but doesn't actually do anything.
Safety
- The user must check that the entry point exists in the module, as this is not checked by Vulkan.
- The input, output and layout must correctly describe the input, output and layout used by this stage.
unsafe fn fragment_shader_entry_point<'a, S, I, O, L>(
&'a self,
name: &'a CStr,
input: I,
output: O,
layout: L
) -> FragmentShaderEntryPoint<'a, S, I, O, L, P>
&'a self,
name: &'a CStr,
input: I,
output: O,
layout: L
) -> FragmentShaderEntryPoint<'a, S, I, O, L, P>
Gets access to an entry point contained in this module.
This is purely a logical operation. It returns a struct that represents the entry point but doesn't actually do anything.
Safety
- The user must check that the entry point exists in the module, as this is not checked by Vulkan.
- The input, output and layout must correctly describe the input, output and layout used by this stage.
unsafe fn compute_shader_entry_point<'a, S, L>(
&'a self,
name: &'a CStr,
layout: L
) -> ComputeShaderEntryPoint<'a, S, L, P>
&'a self,
name: &'a CStr,
layout: L
) -> ComputeShaderEntryPoint<'a, S, L, P>
Gets access to an entry point contained in this module.
This is purely a logical operation. It returns a struct that represents the entry point but doesn't actually do anything.
Safety
- The user must check that the entry point exists in the module, as this is not checked by Vulkan.
- The layout must correctly describe the layout used by this stage.
Trait Implementations
impl<P: Debug> Debug for ShaderModule<P> where
P: SafeDeref<Target = Device>,
[src]
P: SafeDeref<Target = Device>,
impl<P> VulkanObject for ShaderModule<P> where
P: SafeDeref<Target = Device>,
[src]
P: SafeDeref<Target = Device>,
type Object = ShaderModule
The type of the object.
fn internal_object(&self) -> ShaderModule
Returns a reference to the object.
impl<P> Drop for ShaderModule<P> where
P: SafeDeref<Target = Device>,
[src]
P: SafeDeref<Target = Device>,