Fix compiler errors after update to Swift 4.2
This commit is contained in:
parent
9f5b7c7cb5
commit
5caa763a99
3 changed files with 25 additions and 20 deletions
|
@ -11,7 +11,7 @@ import Foundation
|
||||||
extension UnsafeMutableRawPointer {
|
extension UnsafeMutableRawPointer {
|
||||||
func writeAndAdvance<T>(value: inout T) -> UnsafeMutableRawPointer {
|
func writeAndAdvance<T>(value: inout T) -> UnsafeMutableRawPointer {
|
||||||
let stride = MemoryLayout.stride(ofValue: value)
|
let stride = MemoryLayout.stride(ofValue: value)
|
||||||
copyBytes(from: &value, count: stride)
|
copyMemory(from: &value, byteCount: stride)
|
||||||
return advanced(by: stride)
|
return advanced(by: stride)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,7 @@ public struct Parameters {
|
||||||
public mutating func write(to buffer: MTLBuffer, offset: Int = 0) {
|
public mutating func write(to buffer: MTLBuffer, offset: Int = 0) {
|
||||||
let start = buffer.contents().advanced(by: offset)
|
let start = buffer.contents().advanced(by: offset)
|
||||||
let stride = MemoryLayout.stride(ofValue: self)
|
let stride = MemoryLayout.stride(ofValue: self)
|
||||||
start.copyBytes(from: &self, count: stride)
|
start.copyMemory(from: &self, byteCount: stride)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -226,7 +226,9 @@ public class Field {
|
||||||
var ptr = ballBuffer.contents()
|
var ptr = ballBuffer.contents()
|
||||||
var idx = 0
|
var idx = 0
|
||||||
for var ball in self.balls {
|
for var ball in self.balls {
|
||||||
ballBuffer.addDebugMarker("Ball \(idx)", range: NSRange(location: ballBuffer.contents().distance(to: ptr), length: 16))
|
if let range = Range(NSRange(location: ballBuffer.contents().distance(to: ptr), length: 16)) {
|
||||||
|
ballBuffer.addDebugMarker("Ball \(idx)", range: range)
|
||||||
|
}
|
||||||
ptr = write(value: &ball.position.x, to: ptr)
|
ptr = write(value: &ball.position.x, to: ptr)
|
||||||
ptr = write(value: &ball.position.y, to: ptr)
|
ptr = write(value: &ball.position.y, to: ptr)
|
||||||
var r = ball.radius
|
var r = ball.radius
|
||||||
|
@ -242,7 +244,7 @@ public class Field {
|
||||||
|
|
||||||
private func write<T>(value: inout T, to ptr: UnsafeMutableRawPointer) -> UnsafeMutableRawPointer {
|
private func write<T>(value: inout T, to ptr: UnsafeMutableRawPointer) -> UnsafeMutableRawPointer {
|
||||||
let sizeOfType = MemoryLayout<T>.stride
|
let sizeOfType = MemoryLayout<T>.stride
|
||||||
ptr.copyBytes(from: &value, count: sizeOfType)
|
ptr.copyMemory(from: &value, byteCount: sizeOfType)
|
||||||
return ptr.advanced(by: sizeOfType)
|
return ptr.advanced(by: sizeOfType)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -73,9 +73,12 @@ public class Renderer: NSObject, MTKViewDelegate {
|
||||||
guard let device = MTLCreateSystemDefaultDevice() else {
|
guard let device = MTLCreateSystemDefaultDevice() else {
|
||||||
fatalError("Unable to create Metal system device")
|
fatalError("Unable to create Metal system device")
|
||||||
}
|
}
|
||||||
|
guard let queue = device.makeCommandQueue() else {
|
||||||
|
fatalError("Unable to create Metal command queue")
|
||||||
|
}
|
||||||
|
|
||||||
self.device = device
|
self.device = device
|
||||||
commandQueue = device.makeCommandQueue()
|
commandQueue = queue
|
||||||
|
|
||||||
super.init()
|
super.init()
|
||||||
}
|
}
|
||||||
|
@ -109,24 +112,24 @@ public class Renderer: NSObject, MTKViewDelegate {
|
||||||
|
|
||||||
field.update()
|
field.update()
|
||||||
|
|
||||||
let buffer = commandQueue.makeCommandBuffer()
|
if let buffer = commandQueue.makeCommandBuffer() {
|
||||||
buffer.label = "Render"
|
buffer.label = "Render"
|
||||||
|
|
||||||
if let renderPass = view.currentRenderPassDescriptor, let renderPipelineState = renderPipelineState {
|
if let renderPass = view.currentRenderPassDescriptor, let renderPipelineState = renderPipelineState, let encoder = buffer.makeRenderCommandEncoder(descriptor: renderPass) {
|
||||||
let encoder = buffer.makeRenderCommandEncoder(descriptor: renderPass)
|
encoder.label = "Render Pass"
|
||||||
encoder.label = "Render Pass"
|
encoder.setViewport(MTLViewport(originX: 0.0, originY: 0.0, width: Double(view.drawableSize.width), height: Double(view.drawableSize.height), znear: -1.0, zfar: 1.0))
|
||||||
encoder.setViewport(MTLViewport(originX: 0.0, originY: 0.0, width: Double(view.drawableSize.width), height: Double(view.drawableSize.height), znear: -1.0, zfar: 1.0))
|
encoder.setRenderPipelineState(renderPipelineState)
|
||||||
encoder.setRenderPipelineState(renderPipelineState)
|
encoder.setVertexBytes(points, length: points.count * MemoryLayout<Vertex>.stride, index: 0)
|
||||||
encoder.setVertexBytes(points, length: points.count * MemoryLayout<Vertex>.stride, index: 0)
|
encoder.setFragmentBuffer(field.parametersBuffer, offset: 0, index: 0)
|
||||||
encoder.setFragmentBuffer(field.parametersBuffer, offset: 0, index: 0)
|
encoder.setFragmentBuffer(field.ballBuffer, offset: 0, index: 1)
|
||||||
encoder.setFragmentBuffer(field.ballBuffer, offset: 0, index: 1)
|
encoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: 6)
|
||||||
encoder.drawPrimitives(type: .triangle, vertexStart: 0, vertexCount: 6)
|
encoder.endEncoding()
|
||||||
encoder.endEncoding()
|
|
||||||
|
|
||||||
if let drawable = view.currentDrawable {
|
if let drawable = view.currentDrawable {
|
||||||
buffer.present(drawable)
|
buffer.present(drawable)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
buffer.commit()
|
||||||
}
|
}
|
||||||
buffer.commit()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue