forked from hupe1980/go-mtl
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommand_encoder.m
More file actions
64 lines (52 loc) · 3.88 KB
/
command_encoder.m
File metadata and controls
64 lines (52 loc) · 3.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// +build darwin
#import <Metal/Metal.h>
#include "command_encoder.h"
void CommandEncoder_EndEncoding(void * commandEncoder) {
[(id<MTLCommandEncoder>)commandEncoder endEncoding];
}
void ComputeCommandEncoder_SetComputePipelineState(void * computeCommandEncoder, void * computePipelineState) {
[(id<MTLComputeCommandEncoder>)computeCommandEncoder setComputePipelineState:(id<MTLComputePipelineState>)computePipelineState];
}
void ComputeCommandEncoder_SetBuffer(void * computeCommandEncoder, void * buffer, uint_t offset, uint_t index) {
[(id<MTLComputeCommandEncoder>)computeCommandEncoder setBuffer:(id<MTLBuffer>)buffer
offset:(NSUInteger)offset
atIndex:(NSUInteger)index];
}
void ComputeCommandEncoder_DispatchThreads(void * computeCommandEncoder, struct Size gridSize, struct Size threadgroupSize) {
[(id<MTLComputeCommandEncoder>)computeCommandEncoder dispatchThreads:(MTLSize){gridSize.Width, gridSize.Height, gridSize.Depth}
threadsPerThreadgroup:(MTLSize){threadgroupSize.Width, threadgroupSize.Height, threadgroupSize.Depth}];
}
void RenderCommandEncoder_SetRenderPipelineState(void * renderCommandEncoder, void * renderPipelineState) {
[(id<MTLRenderCommandEncoder>)renderCommandEncoder setRenderPipelineState:(id<MTLRenderPipelineState>)renderPipelineState];
}
void RenderCommandEncoder_SetVertexBuffer(void * renderCommandEncoder, void * buffer, uint_t offset, uint_t index) {
[(id<MTLRenderCommandEncoder>)renderCommandEncoder setVertexBuffer:(id<MTLBuffer>)buffer
offset:(NSUInteger)offset
atIndex:(NSUInteger)index];
}
void RenderCommandEncoder_SetVertexBytes(void * renderCommandEncoder, const void * bytes, size_t length, uint_t index) {
[(id<MTLRenderCommandEncoder>)renderCommandEncoder setVertexBytes:bytes
length:(NSUInteger)length
atIndex:(NSUInteger)index];
}
void RenderCommandEncoder_DrawPrimitives(void * renderCommandEncoder, uint8_t primitiveType, uint_t vertexStart, uint_t vertexCount) {
[(id<MTLRenderCommandEncoder>)renderCommandEncoder drawPrimitives:(MTLPrimitiveType)primitiveType
vertexStart:(NSUInteger)vertexStart
vertexCount:(NSUInteger)vertexCount];
}
void BlitCommandEncoder_CopyFromTexture(void * blitCommandEncoder,
void * srcTexture, uint_t srcSlice, uint_t srcLevel, struct Origin srcOrigin, struct Size srcSize,
void * dstTexture, uint_t dstSlice, uint_t dstLevel, struct Origin dstOrigin) {
[(id<MTLBlitCommandEncoder>)blitCommandEncoder copyFromTexture:(id<MTLTexture>)srcTexture
sourceSlice:(NSUInteger)srcSlice
sourceLevel:(NSUInteger)srcLevel
sourceOrigin:(MTLOrigin){srcOrigin.X, srcOrigin.Y, srcOrigin.Z}
sourceSize:(MTLSize){srcSize.Width, srcSize.Height, srcSize.Depth}
toTexture:(id<MTLTexture>)dstTexture
destinationSlice:(NSUInteger)dstSlice
destinationLevel:(NSUInteger)dstLevel
destinationOrigin:(MTLOrigin){dstOrigin.X, dstOrigin.Y, dstOrigin.Z}];
}
void BlitCommandEncoder_SynchronizeResource(void * blitCommandEncoder, void * resource) {
[(id<MTLBlitCommandEncoder>)blitCommandEncoder synchronizeResource:(id<MTLResource>)resource];
}