Files
Gryphn/projects/apis/metal/src/devices/metal_output_device.m
2025-07-15 09:18:53 -04:00

31 lines
1.1 KiB
Objective-C

#include <output_device/gryphn_physical_output_device.h>
#include <Metal/Metal.h>
#include "metal_output_devices.h"
#include "instance/metal_instance.h"
#include "instance/gryphn_instance.h"
gnReturnCode createMetalOutputDevice(gnOutputDeviceHandle outputDevice, gnInstanceHandle instance, gnOutputDeviceInfo deviceInfo) {
outputDevice->outputDevice = malloc(sizeof(gnPlatformOutputDevice));
outputDevice->outputDevice->device = deviceInfo.physicalDevice.physicalDevice->device.retain;
outputDevice->outputDevice->transferQueue = outputDevice->outputDevice->device.newCommandQueue;
return GN_SUCCESS;
}
void waitForMetalDevice(gnOutputDeviceHandle device) {
[device->outputDevice->executingCommandBuffer waitUntilCompleted];
}
void destroyMetalOutputDevice(gnOutputDeviceHandle device) {
// for (int i = 0; i < device->outputDevice->queueCount; i++) {
// [device->outputDevice->queues[i] release];
// }
[device->outputDevice->transferQueue release];
[device->outputDevice->device release];
free(device->outputDevice);
}
// struct mtlFramebufferVertex {
// float x, y;
// float u, v;
// };