Function Prototype

vkCreateShaderModule

Creates a new shader module object

To create a shader module, call:

VkResult vkCreateShaderModule(
    VkDevice device,
    const VkShaderModuleCreateInfo* pCreateInfo,
    const VkAllocationCallbacks* pAllocator,
    VkShaderModule* pShaderModule);
  • device is the logical device that creates the shader module.
  • pCreateInfo is a pointer to a VkShaderModuleCreateInfo structure.
  • pAllocator controls host memory allocation as described in the Memory Allocation chapter.
  • pShaderModule is a pointer to a VkShaderModule handle in which the resulting shader module object is returned.

Once a shader module has been created, any entry points it contains can be used in pipeline shader stages as described in Compute Pipelines and Graphics Pipelines.

If the maintenance5 feature is enabled, shader module creation can be omitted entirely. Instead, applications should provide the VkShaderModuleCreateInfo structure directly in to pipeline creation by chaining it to VkPipelineShaderStageCreateInfo. This avoids the overhead of creating and managing an additional object.

Valid Usage

VUID-vkCreateShaderModule-pCreateInfo-06904

If pCreateInfo is not NULL, pCreateInfo→pNext must be NULL or a pointer to a valid instance of

Valid Usage (Implicit)

VUID-vkCreateShaderModule-pCreateInfo-parameter

pCreateInfo must be a valid pointer to a valid VkShaderModuleCreateInfo structure

VUID-vkCreateShaderModule-pAllocator-parameter

If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure

VUID-vkCreateShaderModule-pShaderModule-parameter

pShaderModule must be a valid pointer to a VkShaderModule handle