Skip to content

Commit dad8253

Browse files
author
Mike Solomon
committed
Starts fixing bad bindings
1 parent 040cee2 commit dad8253

14 files changed

Lines changed: 1020 additions & 23 deletions

src/Web/GPU/BufferSource.purs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
module Web.GPU.BufferSource where
2+
3+
import Data.ArrayBuffer.Types (ArrayBuffer, DataView, Float32Array, Float64Array, Int16Array, Int32Array, Int8Array, Uint16Array, Uint32Array, Uint8Array, Uint8ClampedArray)
4+
import Unsafe.Coerce (unsafeCoerce)
5+
import Web.GPU.Internal.Types (BufferSource)
6+
7+
fromArrayBuffer :: ArrayBuffer -> BufferSource
8+
fromArrayBuffer = unsafeCoerce
9+
10+
fromInt8Array :: Int8Array -> BufferSource
11+
fromInt8Array = unsafeCoerce
12+
13+
fromInt16Array :: Int16Array -> BufferSource
14+
fromInt16Array = unsafeCoerce
15+
16+
fromInt32Array :: Int32Array -> BufferSource
17+
fromInt32Array = unsafeCoerce
18+
19+
fromUint8Array :: Uint8Array -> BufferSource
20+
fromUint8Array = unsafeCoerce
21+
22+
fromUint16Array :: Uint16Array -> BufferSource
23+
fromUint16Array = unsafeCoerce
24+
25+
fromUint32Array :: Uint32Array -> BufferSource
26+
fromUint32Array = unsafeCoerce
27+
28+
fromUint8ClampedArray :: Uint8ClampedArray -> BufferSource
29+
fromUint8ClampedArray = unsafeCoerce
30+
31+
-- todo: get these added to a PS lib
32+
-- fromBigInt64Array :: BigInt64Array -> BufferSource
33+
-- fromBigInt64Array = unsafeCoerce
34+
35+
-- fromBigUint64Array :: BigUint64Array -> BufferSource
36+
-- fromBigUint64Array = unsafeCoerce
37+
38+
fromFloat32Array :: Float32Array -> BufferSource
39+
fromFloat32Array = unsafeCoerce
40+
41+
fromFloat64Array :: Float64Array -> BufferSource
42+
fromFloat64Array = unsafeCoerce
43+
44+
fromDataView :: DataView -> BufferSource
45+
fromDataView = unsafeCoerce
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
module Web.GPU.GPUImageCopyExternalImage where
2+
3+
import Data.Newtype (class Newtype)
4+
import Web.GPU.Internal.RequiredAndOptional (RequiredAndOptional)
5+
import Web.GPU.Internal.Types (GPUImageCopyExternalImageSource, GPUOrigin2D)
6+
7+
newtype GPUImageCopyExternalImage = GPUImageCopyExternalImage
8+
( RequiredAndOptional (source :: GPUImageCopyExternalImageSource)
9+
( origin :: GPUOrigin2D
10+
, flipY :: Boolean
11+
)
12+
)
13+
14+
derive instance Newtype GPUImageCopyExternalImage _
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
module Web.GPU.GPUImageCopyExternalImageSource where
2+
3+
import Unsafe.Coerce (unsafeCoerce)
4+
import Web.GPU.Internal.Types (GPUImageCopyExternalImageSource, ImageBitmap, OffscreenCanvas)
5+
import Web.HTML (HTMLCanvasElement, HTMLVideoElement)
6+
7+
fromImageBitmap :: ImageBitmap -> GPUImageCopyExternalImageSource
8+
fromImageBitmap = unsafeCoerce
9+
10+
fromHTMLVideoElement :: HTMLVideoElement -> GPUImageCopyExternalImageSource
11+
fromHTMLVideoElement = unsafeCoerce
12+
13+
fromHTMLCanvasElement :: HTMLCanvasElement -> GPUImageCopyExternalImageSource
14+
fromHTMLCanvasElement = unsafeCoerce
15+
16+
fromOffscreenCanvas :: OffscreenCanvas -> GPUImageCopyExternalImageSource
17+
fromOffscreenCanvas = unsafeCoerce
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
module Web.GPU.GPUImageCopyTextureTagged where
2+
3+
import Data.Newtype (class Newtype)
4+
import Web.GPU.Internal.RequiredAndOptional (RequiredAndOptional)
5+
import Web.GPU.PredefinedColorSpace (PredefinedColorSpace)
6+
7+
newtype GPUImageCopyTextureTagged = GPUImageCopyTextureTagged (RequiredAndOptional () (
8+
colorSpace:: PredefinedColorSpace,
9+
premultipliedAlpha :: Boolean
10+
))
11+
12+
derive instance Newtype GPUImageCopyTextureTagged _
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module Web.GPU.GPUImageDataLayout where
2+
3+
import Data.Newtype (class Newtype)
4+
import Web.GPU.Internal.RequiredAndOptional (RequiredAndOptional)
5+
import Web.GPU.Internal.Types (GPUSize64, GPUSize32)
6+
7+
newtype GPUImageDataLayout = GPUImageDataLayout
8+
( RequiredAndOptional ()
9+
( offset :: GPUSize64
10+
, bytesPerRow :: GPUSize32
11+
, rowsPerImage :: GPUSize32
12+
)
13+
)
14+
15+
derive instance Newtype GPUImageDataLayout _

src/Web/GPU/GPUOrigin2D.purs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module Web.GPU.GPUOrigin2D
2+
( gpuOrigin2DX
3+
, gpuOrigin2DXY
4+
, gpuOrigin2DDict
5+
) where
6+
7+
import Unsafe.Coerce (unsafeCoerce)
8+
import Web.GPU.Internal.Types (GPUOrigin2D, GPUIntegerCoordinate)
9+
10+
gpuOrigin2DX :: GPUIntegerCoordinate -> GPUOrigin2D
11+
gpuOrigin2DX x = unsafeCoerce [ x ]
12+
13+
gpuOrigin2DXY :: GPUIntegerCoordinate -> GPUIntegerCoordinate -> GPUOrigin2D
14+
gpuOrigin2DXY x y = unsafeCoerce [ x, y ]
15+
16+
gpuOrigin2DDict
17+
:: { x :: GPUIntegerCoordinate
18+
, y :: GPUIntegerCoordinate
19+
}
20+
-> GPUOrigin2D
21+
gpuOrigin2DDict = unsafeCoerce

src/Web/GPU/GPUQueue.js

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Web/GPU/GPUQueue.purs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
module Web.GPU.GPUQueue
2+
( copyExternalImageToTexture
3+
, onSubmittedWorkDone
4+
, submit
5+
, writeBuffer
6+
, writeBufferWithOffset
7+
, writeBufferWithOffsetAndSize
8+
, writeBufferWithSize
9+
, writeTexture
10+
)
11+
where
12+
13+
import Prelude
14+
15+
import Effect (Effect)
16+
import Web.GPU.GPUImageCopyExternalImage (GPUImageCopyExternalImage)
17+
import Web.GPU.GPUImageCopyTexture (GPUImageCopyTexture)
18+
import Web.GPU.GPUImageCopyTextureTagged (GPUImageCopyTextureTagged)
19+
import Web.GPU.GPUImageDataLayout (GPUImageDataLayout)
20+
import Web.GPU.Internal.Types (BufferSource, GPUBuffer, GPUCommandBuffer, GPUExtent3D, GPUQueue, GPUSize64)
21+
import Web.Promise (Promise)
22+
23+
foreign import submitImpl :: GPUQueue -> Array GPUCommandBuffer -> Effect Unit
24+
submit GPUQueue Array GPUCommandBuffer Effect Unit
25+
submit = submitImpl
26+
foreign import onSubmittedWorkDoneImpl :: GPUQueue -> Effect (Promise Unit)
27+
onSubmittedWorkDone :: GPUQueue -> Effect (Promise Unit)
28+
onSubmittedWorkDone = onSubmittedWorkDoneImpl
29+
foreign import writeBufferImpl :: GPUQueue -> GPUBuffer -> GPUSize64 -> BufferSource -> Effect Unit
30+
writeBuffer :: GPUQueue -> GPUBuffer -> Int -> BufferSource -> Effect Unit
31+
writeBuffer = writeBufferImpl
32+
foreign import writeBufferWithOffsetImpl :: GPUQueue -> GPUBuffer -> GPUSize64 -> BufferSource -> GPUSize64 -> Effect Unit
33+
writeBufferWithOffset :: GPUQueue -> GPUBuffer -> Int -> BufferSource -> Int -> Effect Unit
34+
writeBufferWithOffset = writeBufferWithOffsetImpl
35+
foreign import writeBufferWithSizeImpl :: GPUQueue -> GPUBuffer -> GPUSize64 -> BufferSource -> GPUSize64 -> Effect Unit
36+
writeBufferWithSize :: GPUQueue -> GPUBuffer -> Int -> BufferSource -> Int -> Effect Unit
37+
writeBufferWithSize = writeBufferWithSizeImpl
38+
foreign import writeBufferWithOffsetAndSizeImpl :: GPUQueue -> GPUBuffer -> GPUSize64 -> BufferSource -> GPUSize64 -> GPUSize64 -> Effect Unit
39+
writeBufferWithOffsetAndSize :: GPUQueue -> GPUBuffer -> Int -> BufferSource -> Int -> Int -> Effect Unit
40+
writeBufferWithOffsetAndSize = writeBufferWithOffsetAndSizeImpl
41+
foreign import writeTextureImpl :: GPUQueue -> GPUImageCopyTexture -> BufferSource -> GPUImageDataLayout -> GPUExtent3D -> Effect Unit
42+
writeTexture :: GPUQueue -> GPUImageCopyTexture -> BufferSource -> GPUImageDataLayout -> GPUExtent3D -> Effect Unit
43+
writeTexture = writeTextureImpl
44+
foreign import copyExternalImageToTextureImpl :: GPUQueue -> GPUImageCopyExternalImage -> GPUImageCopyTextureTagged -> GPUExtent3D -> Effect Unit
45+
copyExternalImageToTexture :: GPUQueue -> GPUImageCopyExternalImage -> GPUImageCopyTextureTagged -> GPUExtent3D -> Effect Unit
46+
copyExternalImageToTexture = copyExternalImageToTextureImpl
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
module Web.GPU.GPURenderBundleDescriptor where
2+
3+
import Data.Newtype (class Newtype)
4+
import Web.GPU.Internal.RequiredAndOptional (RequiredAndOptional)
5+
6+
newtype GPURenderBundleDescriptor = GPURenderBundleDescriptor (RequiredAndOptional () (label ::String))
7+
8+
derive instance Newtype GPURenderBundleDescriptor _

0 commit comments

Comments
 (0)