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

@@ -3,23 +3,26 @@
#include "core/gryphn_platform_functions.h"
#include "core/instance/init/gryphn_init.h"
gnReturnCode gnCreateOutputDevice(gnOutputDevice* outputDevice, gnInstanceHandle instance, struct gnOutputDeviceInfo_t deviceInfo) {
gnReturnCode gnCreateOutputDevice(gnOutputDeviceHandle* outputDevice, gnInstanceHandle instance, struct gnOutputDeviceInfo_t deviceInfo) {
*outputDevice = malloc(sizeof(struct gnOutputDevice_t));
if (instance->loadDeviceFunctions == gnFalse) {
instance->deviceFunctions = malloc(sizeof(struct gnDeviceFunctions_t));
gnLoadDeviceFunctions(instance->dynamicLib, instance->deviceFunctions);
instance->loadDeviceFunctions = gnTrue;
}
outputDevice->deviceFunctions = instance->deviceFunctions;
(*outputDevice)->deviceFunctions = instance->deviceFunctions;
outputDevice->instance = instance;
outputDevice->physicalDevice = deviceInfo.physicalDevice;
outputDevice->deviceInfo = deviceInfo;
return instance->functions->_gnCreateOutputDevoce(outputDevice, instance, deviceInfo);
(*outputDevice)->instance = instance;
(*outputDevice)->physicalDevice = deviceInfo.physicalDevice;
(*outputDevice)->deviceInfo = deviceInfo;
return instance->functions->_gnCreateOutputDevoce(*outputDevice, instance, deviceInfo);
}
void gnWaitForDevice(gnOutputDevice *device) {
void gnWaitForDevice(gnOutputDeviceHandle device) {
device->deviceFunctions->_gnWaitForDevice(device);
}
void gnDestroyOutputDevice(gnOutputDevice* device) {
void gnDestroyOutputDevice(gnOutputDeviceHandle device) {
device->instance->functions->_gnDestroyOutputDevice(device);
free(device);
}

View File

@@ -17,14 +17,18 @@ typedef struct gnOutputDeviceInfo_t {
struct gnPhysicalDevice_t physicalDevice;
} gnOutputDeviceInfo;
typedef struct gnOutputDevice_t {
#ifdef GN_REVEAL_IMPL
struct gnOutputDevice_t {
struct gnPlatformOutputDevice_t* outputDevice;
struct gnDeviceFunctions_t* deviceFunctions;
struct gnOutputDeviceInfo_t deviceInfo;
gnInstanceHandle instance;
gnPhysicalDevice physicalDevice;
} gnOutputDevice;
};
#endif
typedef struct gnOutputDevice_t* gnOutputDeviceHandle;
typedef gnOutputDeviceHandle gnOutputDevice;
gnReturnCode gnCreateOutputDevice(gnOutputDevice* outputDevice, gnInstanceHandle instance, struct gnOutputDeviceInfo_t deviceInfo);
void gnWaitForDevice(gnOutputDevice* device);
void gnDestroyOutputDevice(gnOutputDevice* device);
gnReturnCode gnCreateOutputDevice(gnOutputDeviceHandle* outputDevice, gnInstanceHandle instance, struct gnOutputDeviceInfo_t deviceInfo);
void gnWaitForDevice(gnOutputDeviceHandle device);
void gnDestroyOutputDevice(gnOutputDeviceHandle device);