| Safe Haskell | None |
|---|---|
| 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.
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
pCodeis a pointer to SPIR-V code,codeSizemust be a multiple of 4 -
pCodemust 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 theGL_KHR_vulkan_glslextension specification - If
pCodeis 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
pCodeis a pointer to GLSL code, it must be valid GLSL code written to theGL_KHR_vulkan_glslGLSL extension specification -
pCodemust declare theShadercapability for 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
pCodedeclares any of the capabilities listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied -
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
pCodedeclares any of the SPIR-V extensions listed in the SPIR-V Environment appendix, one of the corresponding requirements must be satisfied
Valid Usage (Implicit)
-
sTypemust beSTRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
-
pNextmust beNULLor a pointer to a valid instance ofShaderModuleValidationCacheCreateInfoEXT - The
sTypevalue of each struct in thepNextchain must be unique -
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
Constructors
| ShaderModuleCreateInfo | |
Fields
| |
Instances
newtype ShaderModule Source #
VkShaderModule - Opaque handle to a shader module object
See Also
VK_VERSION_1_0,
PipelineShaderStageCreateInfo,
createShaderModule,
destroyShaderModule
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 |