destroy device lifecycle

This commit is contained in:
2026-05-08 00:33:27 -04:00
parent 4087972149
commit dca85ff7e8
6 changed files with 17 additions and 1 deletions
@@ -9,3 +9,9 @@ gnReturnCode gnCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo,
*device = newDevice; *device = newDevice;
return instance->dispatchTable.createDevice(instance, createInfo, newDevice); return instance->dispatchTable.createDevice(instance, createInfo, newDevice);
} }
gnReturnCode gnDestroyDevice(gnDevice* device) {
gnReturnCode returnCode = (*device)->dispatchTable.destroyDevice(*device);
*device = NULL;
return returnCode;
}
@@ -13,3 +13,4 @@ typedef struct gnDevice_t {
} gnDevice_t; } gnDevice_t;
gnReturnCode gnCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo, gnDevice* device); gnReturnCode gnCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo, gnDevice* device);
gnReturnCode gnDestroyDevice(gnDevice* device);
@@ -1,7 +1,8 @@
#pragma once #pragma once
#include "gryphn_handle.h" #include "gryphn_handle.h"
typedef gnReturnCode (*PFN_gnDestroyDevice)(gnDevice);
typedef struct gnDeviceDispatchTable { typedef struct gnDeviceDispatchTable {
PFN_gnDestroyDevice destroyDevice;
} gnDeviceDispatchTable; } gnDeviceDispatchTable;
@@ -57,6 +57,12 @@ gnReturnCode metalGetPhysicalDeviceProperties(gnPhysicalDevice device, gnPhysica
} }
gnReturnCode metalCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo, gnDevice device) { gnReturnCode metalCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo, gnDevice device) {
device->dispatchTable.destroyDevice = metalDestroyDevice;
device->internalData = createInfo->physicalDevice->internalData; device->internalData = createInfo->physicalDevice->internalData;
return GN_SUCCESS; return GN_SUCCESS;
} }
gnReturnCode metalDestroyDevice(gnDevice device) {
// [device->internalData release];
return GN_SUCCESS;
}
@@ -8,3 +8,4 @@
gnReturnCode metalEnumeratePhysicalDevices(gnInstance instance, uint32_t* deviceCount, gnPhysicalDevice* devices); gnReturnCode metalEnumeratePhysicalDevices(gnInstance instance, uint32_t* deviceCount, gnPhysicalDevice* devices);
gnReturnCode metalGetPhysicalDeviceProperties(gnPhysicalDevice device, gnPhysicalDeviceProperties* properties); gnReturnCode metalGetPhysicalDeviceProperties(gnPhysicalDevice device, gnPhysicalDeviceProperties* properties);
gnReturnCode metalCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo, gnDevice device); gnReturnCode metalCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo, gnDevice device);
gnReturnCode metalDestroyDevice(gnDevice device);
+1
View File
@@ -68,5 +68,6 @@ int main() {
std::cerr << "Caught Exception: " << e.what() << "\n"; std::cerr << "Caught Exception: " << e.what() << "\n";
return 0; return 0;
} }
gnDestroyDevice(&device);
gnDestroyInstance(&instance); gnDestroyInstance(&instance);
} }