device handles

This commit is contained in:
Greg Wells
2025-06-03 13:49:05 -04:00
parent ee03b87600
commit d39f598d3c
7 changed files with 41 additions and 34 deletions

View File

@@ -5,7 +5,7 @@
#include "core/instance/gryphn_instance.h"
#include <core/debugger/gryphn_debugger.h>
gnReturnCode gnCreateOutputDeviceFn(gnOutputDevice* outputDevice, gnInstanceHandle instance, struct gnOutputDeviceInfo_t deviceInfo) {
gnReturnCode gnCreateOutputDeviceFn(gnOutputDeviceHandle outputDevice, gnInstanceHandle instance, struct gnOutputDeviceInfo_t deviceInfo) {
outputDevice->outputDevice = malloc(sizeof(gnPlatformOutputDevice));
outputDevice->outputDevice->device = deviceInfo.physicalDevice.physicalDevice->device.retain;
outputDevice->outputDevice->queueCount = deviceInfo.queueInfoCount;
@@ -17,11 +17,11 @@ gnReturnCode gnCreateOutputDeviceFn(gnOutputDevice* outputDevice, gnInstanceHand
return GN_SUCCESS;
}
void gnWaitForDeviceFn(gnOutputDevice *device) {
void gnWaitForDeviceFn(gnOutputDeviceHandle device) {
[device->outputDevice->executingCommandBuffer waitUntilCompleted];
}
void gnDestroyOutputDeviceFn(gnOutputDevice* device) {
void gnDestroyOutputDeviceFn(gnOutputDeviceHandle device) {
for (int i = 0; i < device->outputDevice->queueCount; i++) {
[device->outputDevice->queues[i] release];
}

View File

@@ -5,7 +5,7 @@
#include "core/texture/metal_texture.h"
#include "core/sync/semaphore/metal_semaphore.h"
gnReturnCode gnCreatePresentationQueueFn(gnPresentationQueue* presentationQueue, const gnOutputDevice* device, struct gnPresentationQueueInfo_t presentationInfo) {
gnReturnCode gnCreatePresentationQueueFn(gnPresentationQueue* presentationQueue, const gnOutputDeviceHandle device, struct gnPresentationQueueInfo_t presentationInfo) {
if (presentationInfo.minImageCount > 3) {
gnDebuggerSetErrorMessage(device->instance->debugger, (gnMessageData){
.message = gnCreateString("On Metal you cannot have more than 3 images in a presentation queue")

View File

@@ -5,7 +5,7 @@
#include <stdio.h>
gnReturnCode gnCreateOutputDeviceFn(gnOutputDevice* outputDevice, gnInstanceHandle instance, struct gnOutputDeviceInfo_t deviceInfo) {
gnReturnCode gnCreateOutputDeviceFn(gnOutputDeviceHandle outputDevice, gnInstanceHandle instance, struct gnOutputDeviceInfo_t deviceInfo) {
outputDevice->outputDevice = malloc(sizeof(gnPlatformOutputDevice));
VkDeviceQueueCreateInfo* queueCreateInfos = malloc(sizeof(VkDeviceQueueCreateInfo) * deviceInfo.queueInfoCount);
@@ -64,11 +64,11 @@ gnReturnCode gnCreateOutputDeviceFn(gnOutputDevice* outputDevice, gnInstanceHand
return GN_SUCCESS;
}
void gnWaitForDeviceFn(const gnOutputDevice* device) {
void gnWaitForDeviceFn(const gnOutputDeviceHandle device) {
vkDeviceWaitIdle(device->outputDevice->device);
}
void gnDestroyOutputDeviceFn(gnOutputDevice* device) {
void gnDestroyOutputDeviceFn(gnOutputDeviceHandle device) {
vkDestroyDevice(device->outputDevice->device, NULL);
free(device->outputDevice);
}

View File

@@ -6,7 +6,7 @@
#include "textures/vulkan_texture.h"
#include "sync/semaphore/vulkan_semaphore.h"
gnReturnCode gnCreatePresentationQueueFn(gnPresentationQueue* presentationQueue, const gnOutputDevice* device, struct gnPresentationQueueInfo_t presentationInfo) {
gnReturnCode gnCreatePresentationQueueFn(gnPresentationQueue* presentationQueue, const gnOutputDeviceHandle device, struct gnPresentationQueueInfo_t presentationInfo) {
presentationQueue->presentationQueue = malloc(sizeof(struct gnPlatformPresentationQueue_t));
vkSwapchainSupportDetails details = vkGetSwapchainSupport(device->physicalDevice.physicalDevice->device, presentationInfo.surface.windowSurface->surface);