Safe Haskell | None |
---|---|
Language | Haskell2010 |
WGPU commands commonly take parameters such as the Instance
, Device
, etc,
which are relatively unchanged across multiple commands. This module provides
a way to supply those parameters from a MonadReader
. Useful for the truly
lazy among us.
Synopsis
- type HasInstance r m = (RIO r m, Has Instance r)
- type HasSurface r m = (RIO r m, Has Surface r)
- type HasAdapter r m = (RIO r m, Has Adapter r)
- type HasDevice r m = (RIO r m, Has Device r)
- type HasSwapChain r m = (RIO r m, Has SwapChain r)
- type HasCommandEncoder r m = (RIO r m, Has CommandEncoder r)
- type HasRenderPassEncoder r m = (RIO r m, Has RenderPassEncoder r)
- type HasQueue r m = (RIO r m, Has Queue r)
- requestAdapter :: HasSurface r m => m (Maybe Adapter)
- getAdapterProperties :: HasAdapter r m => m AdapterProperties
- requestDevice :: HasAdapter r m => DeviceDescriptor -> m (Maybe Device)
- getSwapChainPreferredFormat :: (HasSurface r m, HasAdapter r m) => m TextureFormat
- createSwapChain :: (HasDevice r m, HasSurface r m) => SwapChainDescriptor -> m SwapChain
- getSwapChainCurrentTextureView :: HasSwapChain r m => m TextureView
- swapChainPresent :: HasSwapChain r m => m ()
- createBindGroupLayout :: HasDevice r m => BindGroupLayoutDescriptor -> m BindGroupLayout
- createShaderModule :: HasDevice r m => ShaderModuleDescriptor -> m ShaderModule
- createShaderModuleSPIRV :: HasDevice r m => Text -> SPIRV -> m ShaderModule
- createShaderModuleWGSL :: HasDevice r m => Text -> WGSL -> m ShaderModule
- createPipelineLayout :: HasDevice r m => PipelineLayoutDescriptor -> m PipelineLayout
- createRenderPipeline :: HasDevice r m => RenderPipelineDescriptor -> m RenderPipeline
- createCommandEncoder :: HasDevice r m => Text -> m CommandEncoder
- commandEncoderFinish :: HasCommandEncoder r m => Text -> m CommandBuffer
- beginRenderPass :: HasCommandEncoder r m => RenderPassDescriptor -> m RenderPassEncoder
- renderPassSetPipeline :: HasRenderPassEncoder r m => RenderPipeline -> m ()
- renderPassDraw :: HasRenderPassEncoder r m => Range Word32 -> Range Word32 -> m ()
- endRenderPass :: HasRenderPassEncoder r m => m ()
- getQueue :: HasDevice r m => m Queue
- queueSubmit :: HasQueue r m => Vector CommandBuffer -> m ()
- queueSubmit' :: HasDevice r m => Vector CommandBuffer -> m ()
- getVersion :: HasInstance r m => m Version
- connectLog :: HasInstance r m => m ()
- disconnectLog :: HasInstance r m => m ()
- setLogLevel :: HasInstance r m => LogLevel -> m ()
- addEnv :: MonadReader r m => q -> ReaderT (q, r) m a -> m a
- buildCommandBuffer :: forall r m. HasDevice r m => Text -> Text -> ReaderT (CommandEncoder, r) m () -> m CommandBuffer
- buildRenderPass :: forall r m. HasCommandEncoder r m => RenderPassDescriptor -> ReaderT (RenderPassEncoder, r) m () -> m ()
Constraints
type HasInstance r m = (RIO r m, Has Instance r) Source #
type HasSurface r m = (RIO r m, Has Surface r) Source #
type HasAdapter r m = (RIO r m, Has Adapter r) Source #
type HasSwapChain r m = (RIO r m, Has SwapChain r) Source #
type HasCommandEncoder r m = (RIO r m, Has CommandEncoder r) Source #
type HasRenderPassEncoder r m = (RIO r m, Has RenderPassEncoder r) Source #
Classes
Lifted Functions
Adapter
requestAdapter :: HasSurface r m => m (Maybe Adapter) Source #
getAdapterProperties :: HasAdapter r m => m AdapterProperties Source #
Device
requestDevice :: HasAdapter r m => DeviceDescriptor -> m (Maybe Device) Source #
Swapchain
getSwapChainPreferredFormat :: (HasSurface r m, HasAdapter r m) => m TextureFormat Source #
createSwapChain :: (HasDevice r m, HasSurface r m) => SwapChainDescriptor -> m SwapChain Source #
getSwapChainCurrentTextureView :: HasSwapChain r m => m TextureView Source #
swapChainPresent :: HasSwapChain r m => m () Source #
Resource Binding
createBindGroupLayout :: HasDevice r m => BindGroupLayoutDescriptor -> m BindGroupLayout Source #
Shader Modules
createShaderModule :: HasDevice r m => ShaderModuleDescriptor -> m ShaderModule Source #
createShaderModuleSPIRV :: HasDevice r m => Text -> SPIRV -> m ShaderModule Source #
createShaderModuleWGSL :: HasDevice r m => Text -> WGSL -> m ShaderModule Source #
Pipelines
Render
createPipelineLayout :: HasDevice r m => PipelineLayoutDescriptor -> m PipelineLayout Source #
createRenderPipeline :: HasDevice r m => RenderPipelineDescriptor -> m RenderPipeline Source #
Command Encoding
createCommandEncoder :: HasDevice r m => Text -> m CommandEncoder Source #
commandEncoderFinish :: HasCommandEncoder r m => Text -> m CommandBuffer Source #
beginRenderPass :: HasCommandEncoder r m => RenderPassDescriptor -> m RenderPassEncoder Source #
renderPassSetPipeline :: HasRenderPassEncoder r m => RenderPipeline -> m () Source #
renderPassDraw :: HasRenderPassEncoder r m => Range Word32 -> Range Word32 -> m () Source #
endRenderPass :: HasRenderPassEncoder r m => m () Source #
Queue
queueSubmit :: HasQueue r m => Vector CommandBuffer -> m () Source #
queueSubmit' :: HasDevice r m => Vector CommandBuffer -> m () Source #
Fetch the queue from a device and submit command buffers to it.
Version
getVersion :: HasInstance r m => m Version Source #
Logging
connectLog :: HasInstance r m => m () Source #
disconnectLog :: HasInstance r m => m () Source #
setLogLevel :: HasInstance r m => LogLevel -> m () Source #
Reader Contexts
addEnv :: MonadReader r m => q -> ReaderT (q, r) m a -> m a Source #
Add q
into the reader environment.
Building
Command Encoding
:: forall r m. HasDevice r m | |
=> Text | Debugging label for the command encoder. |
-> Text | Debugging label for the command buffer. |
-> ReaderT (CommandEncoder, r) m () | Action to configure the |
-> m CommandBuffer | Completed |
Build a CommandBuffer
by running actions in an environment that has
access to a CommandEncoder
.
buildRenderPass :: forall r m. HasCommandEncoder r m => RenderPassDescriptor -> ReaderT (RenderPassEncoder, r) m () -> m () Source #
Build a render pass by running actions in an environment that has access
to a RenderPassEncoder
.