| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Vulkan.Core10.Shader
Synopsis
- createShaderModule :: forall a io. (Extendss ShaderModuleCreateInfo a, PokeChain a, MonadIO io) => Device -> ShaderModuleCreateInfo a -> ("allocator" ::: Maybe AllocationCallbacks) -> io ShaderModule
- withShaderModule :: forall a io r. (Extendss ShaderModuleCreateInfo a, PokeChain a, MonadIO io) => Device -> ShaderModuleCreateInfo a -> Maybe AllocationCallbacks -> (io ShaderModule -> (ShaderModule -> io ()) -> r) -> r
- destroyShaderModule :: forall io. MonadIO io => Device -> ShaderModule -> ("allocator" ::: Maybe AllocationCallbacks) -> io ()
- data ShaderModuleCreateInfo (es :: [Type]) = ShaderModuleCreateInfo {
- next :: Chain es
- flags :: ShaderModuleCreateFlags
- code :: ByteString
- newtype ShaderModule = ShaderModule Word64
- newtype ShaderModuleCreateFlags = ShaderModuleCreateFlags Flags
Documentation
Arguments
| :: forall a io. (Extendss ShaderModuleCreateInfo a, PokeChain a, MonadIO io) | |
| => Device |
|
| -> ShaderModuleCreateInfo a |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io ShaderModule |
vkCreateShaderModule - Creates a new shader module object
Description
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.
Note
If the
maintenance5
feature is enabled, shader module creation can be omitted entirely.
Instead, applications should provide the ShaderModuleCreateInfo
structure directly in to pipeline creation by chaining it to
PipelineShaderStageCreateInfo. This avoids the
overhead of creating and managing an additional object.
Valid Usage
- If
pCreateInfois notNULL,pCreateInfo->pNextmust beNULLor a pointer to aShaderModuleValidationCacheCreateInfoEXTstructure
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
-
pCreateInfomust be a valid pointer to a validShaderModuleCreateInfostructure - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure -
pShaderModulemust be a valid pointer to aShaderModulehandle
Return Codes
See Also
VK_VERSION_1_0,
AllocationCallbacks,
Device, ShaderModule,
ShaderModuleCreateInfo
withShaderModule :: forall a io r. (Extendss ShaderModuleCreateInfo a, PokeChain a, MonadIO io) => Device -> ShaderModuleCreateInfo a -> Maybe AllocationCallbacks -> (io ShaderModule -> (ShaderModule -> io ()) -> r) -> r Source #
A convenience wrapper to make a compatible pair of calls to
createShaderModule and destroyShaderModule
To ensure that destroyShaderModule is always called: pass
bracket (or the allocate function from your
favourite resource management library) as the last argument.
To just extract the pair pass (,) as the last argument.
Arguments
| :: forall io. MonadIO io | |
| => Device |
|
| -> ShaderModule |
|
| -> ("allocator" ::: Maybe AllocationCallbacks) |
|
| -> io () |
vkDestroyShaderModule - Destroy a shader module
Description
A shader module can be destroyed while pipelines created using its shaders are still in use.
Valid Usage
- If
AllocationCallbackswere provided whenshaderModulewas created, a compatible set of callbacks must be provided here
- If no
AllocationCallbackswere provided whenshaderModulewas created,pAllocatormust beNULL
Valid Usage (Implicit)
-
devicemust be a validDevicehandle
- If
shaderModuleis notNULL_HANDLE,shaderModulemust be a validShaderModulehandle - If
pAllocatoris notNULL,pAllocatormust be a valid pointer to a validAllocationCallbacksstructure - If
shaderModuleis a valid handle, it must have been created, allocated, or retrieved fromdevice
Host Synchronization
- Host access to
shaderModulemust be externally synchronized
See Also
data ShaderModuleCreateInfo (es :: [Type]) Source #
VkShaderModuleCreateInfo - Structure specifying parameters of a newly created shader module
Valid Usage
- If pCode is a pointer to
SPIR-V code,
pCodemust point to valid SPIR-V code, formatted and packed as described by the Khronos SPIR-V Specification - If pCode is a pointer to
SPIR-V code,
pCodemust 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
SPIR-V code,
pCodemust declare theShadercapability for SPIR-V code - If pCode is a pointer to
SPIR-V code,
pCodemust 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 is a pointer to
SPIR-V code, and
pCodedeclares any of the capabilities listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied - If pCode is a pointer to
SPIR-V code,
pCodemust not declare any SPIR-V extension that is not supported by the API, as described by the Extension section of the SPIR-V Environment appendix - If pCode is a pointer to
SPIR-V code, and
pCodedeclares any of the SPIR-V extensions listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied - If the
VK_NV_glsl_shader
extension is not enabled,
pCodemust be a pointer to SPIR-V code - If
pCodeis a pointer to GLSL code, it must be valid GLSL code written to theGL_KHR_vulkan_glslGLSL extension specification -
codeSizemust be greater than 0
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
-
flagsmust be0 -
pCodemust be a valid pointer to an array of \(\textrm{codeSize} \over 4\)uint32_tvalues
See Also
VK_VERSION_1_0,
ShaderModuleCreateFlags,
StructureType, createShaderModule,
getShaderModuleCreateInfoIdentifierEXT
Constructors
| ShaderModuleCreateInfo | |
Fields
| |
Instances
newtype ShaderModule Source #
VkShaderModule - Opaque handle to a shader module object
See Also
VK_VERSION_1_0,
PipelineShaderStageCreateInfo,
createShaderModule,
destroyShaderModule,
getShaderModuleIdentifierEXT
Constructors
| ShaderModule Word64 |
Instances
newtype ShaderModuleCreateFlags Source #
VkShaderModuleCreateFlags - Reserved for future use
Description
ShaderModuleCreateFlags is a bitmask type for setting a mask, but is
currently reserved for future use.
See Also
Constructors
| ShaderModuleCreateFlags Flags |