hal/metal/probe.lisp
in-package#:luv.metal
eval-when
:compile-toplevel:load-toplevel:execute
cffi:define-foreign-librarymetal-framework
:darwin
:framework"Metal"
cffi:define-foreign-librarymetal-fx-framework
:darwin
:framework"MetalFX"
cffi:use-foreign-librarymetal-framework
cffi:use-foreign-librarymetal-fx-framework
cffi:defcfun
"MTLCreateSystemDefaultDevice"%make-system-default-device:librarymetal-framework
:pointerdefunmake-system-default-device
Return the preferred Metal device as one explicitly owned wrapper.
objc:wrap-objective-c-object
objc:with-objective-c-native-environment
:ownership:owned:protocol-name"MTLDevice"%make-system-default-device
defunprobe-system-default-device
Return bounded, printable evidence from one real native Metal device.
objc:with-autorelease-pool
let
unlessdevice
error"Metal did not provide a system default device."
objc:with-owned-objective-c-object
owned-devicedevice
let
name
device-nameowned-device
list:class
objc:objective-c-object-class-nameowned-device
:protocolobjc:objective-c-object-protocol-nameowned-device
:name:registry-iddevice-registry-idowned-device
defmacro define-objective-c-message
(name (selector result-type &key ownership class consumes-receiver)
&body arguments)defun wrap-objective-c-object
(pointer &key (ownership :borrowed) protocol-name)defmacro with-objective-c-native-environment
(&body body)defmacro with-autorelease-pool
(() &body body)defmacro with-owned-objective-c-object
((variable form) &body body)defun objective-c-string
(object)
The smallest real Metal object proof through the Objective-C boundary.