Skip to content

Commit f80854f

Browse files
author
Mike Solomon
committed
adds gpushadermodule
1 parent 840d95b commit f80854f

2 files changed

Lines changed: 42 additions & 0 deletions

File tree

src/Web/GPU/GPUShaderModule.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const compilationInfoImpl = (shaderModule) => () => shaderModule.compilationInfo();

src/Web/GPU/GPUShaderModule.purs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
module Web.GPU.GPUShaderModule (compilationInfo, GPUCompilationMessageType, error, warning, info) where
2+
3+
import Prelude
4+
5+
import Effect (Effect)
6+
import Web.GPU.Internal.Types (GPUShaderModule)
7+
import Web.GPU.Internal.Unsigned (UnsignedLongLong)
8+
import Web.Promise (Promise)
9+
10+
newtype GPUCompilationMessageType = GPUCompilationMessageType String
11+
12+
derive instance Eq GPUCompilationMessageType
13+
derive instance Ord GPUCompilationMessageType
14+
derive newtype instance Show GPUCompilationMessageType
15+
16+
error :: GPUCompilationMessageType
17+
error = GPUCompilationMessageType "error"
18+
19+
warning :: GPUCompilationMessageType
20+
warning = GPUCompilationMessageType "warning"
21+
22+
info :: GPUCompilationMessageType
23+
info = GPUCompilationMessageType "info"
24+
25+
type GPUCompilationMessage =
26+
{ message :: String
27+
, type :: GPUCompilationMessageType
28+
, lineNum :: UnsignedLongLong
29+
, linePos :: UnsignedLongLong
30+
, offset :: UnsignedLongLong
31+
, length :: UnsignedLongLong
32+
}
33+
34+
type GPUCompilationInfo =
35+
{ messages :: Array GPUCompilationMessage
36+
}
37+
38+
foreign import compilationInfoImpl :: GPUShaderModule -> Effect (Promise GPUCompilationInfo)
39+
40+
compilationInfo :: GPUShaderModule -> Effect (Promise GPUCompilationInfo)
41+
compilationInfo = compilationInfoImpl

0 commit comments

Comments
 (0)