# VkShaderModuleCreateInfo(3) Manual Page

## Name

VkShaderModuleCreateInfo - Structure specifying parameters of a newly created shader module

## C Specification

The `VkShaderModuleCreateInfo` structure is defined as:

    typedef struct VkShaderModuleCreateInfo {
        VkStructureType              sType;
        const void*                  pNext;
        VkShaderModuleCreateFlags    flags;
        size_t                       codeSize;
        const uint32_t*              pCode;
    } VkShaderModuleCreateInfo;

## Members

- `sType` is the type of this structure.

- `pNext` is `NULL` or a pointer to an extension-specific structure.

- `flags` is reserved for future use.

- `codeSize` is the size, in bytes, of the code pointed to by `pCode`.

- `pCode` is a pointer to code that is used to create the shader module. The type and format of the code is determined from the content of the memory addressed by `pCode`.

## Description

Valid Usage

- `codeSize` must be greater than 0

- If `pCode` is a pointer to SPIR-V code, `codeSize` must be a multiple of 4

- `pCode` must point to either valid SPIR-V code, formatted and packed as described by the Khronos SPIR-V Specification or valid GLSL code which must be written to the `GL_KHR_vulkan_glsl` extension specification

- If `pCode` is a pointer to SPIR-V code, that code must adhere to the validation rules described by the Validation Rules within a Module section of the SPIR-V Environment appendix

- If `pCode` is a pointer to GLSL code, it must be valid GLSL code written to the `GL_KHR_vulkan_glsl` GLSL extension specification

- `pCode` must declare the `Shader` capability for SPIR-V code

- `pCode` must not declare any capability that is not supported by the API, as described by the Capabilities section of the SPIR-V Environment appendix

- If `pCode` declares any of the capabilities listed as optional in the SPIR-V Environment appendix, the corresponding feature(s) must be enabled.

Valid Usage (Implicit)

- `sType` must be `VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO`

- `pNext` must be `NULL` or a pointer to a valid instance of VkShaderModuleValidationCacheCreateInfoEXT

- The `sType` value of each struct in the `pNext` chain must be unique

- `flags` must be `0`

- `pCode` must be a valid pointer to an array of \(\textrm{codeSize} \over 4\) `uint32_t` values

## See Also

VkShaderModuleCreateFlags, VkStructureType, vkCreateShaderModule

## Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright (c) 2014-2020 Khronos Group. This work is licensed under a Creative Commons Attribution 4.0 International License.