C Specification
Shader modules contain shader code and one or more entry points. Shaders are selected from a shader module by specifying an entry point as part of pipeline creation. The stages of a pipeline can use shaders that come from different modules. The shader code defining a shader module must be in the SPIR-V format, as described by the Vulkan Environment for SPIR-V appendix.
Shader modules are represented by VkShaderModule handles:
// Provided by VK_VERSION_1_0
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
Description
Shader modules are not used in Vulkan SC, but the type has been retained for compatibility https://registry.khronos.org/vulkansc/specs/1.0-extensions/html/vkspec.html#SCID-8.
In Vulkan SC, the shader modules and pipeline state are supplied to an offline compiler which creates a pipeline cache entry which is loaded at pipeline creation time.
Accordingly, SPIR-V module validation rules defined in the https://registry.khronos.org/vulkansc/specs/1.0-extensions/html/vkspec.html#spirvenv section are only indirectly applied in Vulkan SC, as the SPIR-V modules that must adhere to these validation rules are the inputs of the offline pipeline cache compilation process, while the Vulkan SC API only consumes the implementation-specific pipeline caches resulting from this process. However, violations of SPIR-V module validation rules may be detected and reported by validation layers when the corresponding pipeline cache entry contains stage validation index entries with SPIR-V module data.
For completeness, this specification also includes the following shader module creation valid usage clauses that are expected to be referred to by validation layers to report SPIR-V module validation errors:
-
Let
pCodebe a pointer to the SPIR-V module data of the pipeline cache stage validation index entry. -
Let
codeSizebe the corresponding member of the VkPipelineCacheStageValidationIndexEntry structure describing the pipeline cache stage validation index entry.
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.