allow destruction of surfaces
This commit is contained in:
@@ -33,3 +33,4 @@ typedef struct gnPhysicalDevice_t {
|
|||||||
|
|
||||||
gnReturnCode gnEnumeratePhysicalDevices(gnInstance instance, uint32_t* deviceCount, gnPhysicalDevice* devices);
|
gnReturnCode gnEnumeratePhysicalDevices(gnInstance instance, uint32_t* deviceCount, gnPhysicalDevice* devices);
|
||||||
gnReturnCode gnGetPhysicalDeviceProperties(gnPhysicalDevice device, gnPhysicalDeviceProperties* properties);
|
gnReturnCode gnGetPhysicalDeviceProperties(gnPhysicalDevice device, gnPhysicalDeviceProperties* properties);
|
||||||
|
gnReturnCode gnDoesDeviceSupportSurface(gnPhysicalDevice device, gnSurface surface);
|
||||||
|
|||||||
@@ -8,10 +8,12 @@ typedef gnReturnCode (*PFN_gnCreateMetalSurface)(gnInstance, gnMetalSurfaceCreat
|
|||||||
typedef gnReturnCode (*PFN_enumeratePhysicalDevices)(gnInstance, uint32_t*, gnPhysicalDevice*);
|
typedef gnReturnCode (*PFN_enumeratePhysicalDevices)(gnInstance, uint32_t*, gnPhysicalDevice*);
|
||||||
typedef gnReturnCode (*PFN_gnGetPhysicalDeviceProperties)(gnPhysicalDevice, gnPhysicalDeviceProperties*);
|
typedef gnReturnCode (*PFN_gnGetPhysicalDeviceProperties)(gnPhysicalDevice, gnPhysicalDeviceProperties*);
|
||||||
typedef gnReturnCode (*PFN_gnCreateDevice)(gnInstance, gnDeviceCreateInfo*, gnDevice);
|
typedef gnReturnCode (*PFN_gnCreateDevice)(gnInstance, gnDeviceCreateInfo*, gnDevice);
|
||||||
|
typedef gnReturnCode (*PFN_gnDestroySurface)(gnInstance, gnSurface*);
|
||||||
typedef gnReturnCode (*PFN_gnDestroyInstance)(gnInstance);
|
typedef gnReturnCode (*PFN_gnDestroyInstance)(gnInstance);
|
||||||
|
|
||||||
typedef struct gnInstanceDispatchTable {
|
typedef struct gnInstanceDispatchTable {
|
||||||
PFN_gnCreateMetalSurface createMetalSurface;
|
PFN_gnCreateMetalSurface createMetalSurface;
|
||||||
|
PFN_gnDestroySurface destroySurface;
|
||||||
PFN_enumeratePhysicalDevices enumeratePhysicalDevices;
|
PFN_enumeratePhysicalDevices enumeratePhysicalDevices;
|
||||||
PFN_gnGetPhysicalDeviceProperties getPhysicalDeviceProperties;
|
PFN_gnGetPhysicalDeviceProperties getPhysicalDeviceProperties;
|
||||||
PFN_gnCreateDevice createDevice;
|
PFN_gnCreateDevice createDevice;
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
#include "gryphn_surface.h"
|
||||||
|
#include "instance/gryphn_instance.h"
|
||||||
|
|
||||||
|
gnReturnCode gnDestroySurface(gnInstance instance, gnSurface* surface) {
|
||||||
|
return instance->dispatchTable.destroySurface(instance, surface);
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#pragma once
|
||||||
|
#include "gryphn_metal_surface.h"
|
||||||
|
|
||||||
|
gnReturnCode gnDestroySurface(gnInstance instance, gnSurface* surface);
|
||||||
@@ -4,3 +4,8 @@ gnReturnCode metalCreateSurface(gnInstance instance, gnMetalSurfaceCreateInfo* c
|
|||||||
*surface = createInfo->metalLayer;
|
*surface = createInfo->metalLayer;
|
||||||
return GN_SUCCESS;
|
return GN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gnReturnCode metalDestroySurface(gnInstance instance, gnSurface* surface) {
|
||||||
|
*surface = NULL;
|
||||||
|
return GN_SUCCESS;
|
||||||
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ gnReturnCode initBackend(gnInstance instance, gnInstanceCreateInfo* info) {
|
|||||||
for (int i = 0; i < info->enabledExtensionCount; i++) {
|
for (int i = 0; i < info->enabledExtensionCount; i++) {
|
||||||
if (strcmp(info->enabledExtensions[i], "GN_EXT_surface") == 0) {
|
if (strcmp(info->enabledExtensions[i], "GN_EXT_surface") == 0) {
|
||||||
instance->dispatchTable.createMetalSurface = metalCreateSurface;
|
instance->dispatchTable.createMetalSurface = metalCreateSurface;
|
||||||
|
instance->dispatchTable.destroySurface = metalDestroySurface;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,3 +13,4 @@ gnReturnCode metalGetPhysicalDeviceProperties(gnPhysicalDevice device, gnPhysica
|
|||||||
gnReturnCode metalCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo, gnDevice device);
|
gnReturnCode metalCreateDevice(gnInstance instance, gnDeviceCreateInfo* createInfo, gnDevice device);
|
||||||
gnReturnCode metalDestroyDevice(gnDevice device);
|
gnReturnCode metalDestroyDevice(gnDevice device);
|
||||||
gnReturnCode metalCreateSurface(gnInstance instance, gnMetalSurfaceCreateInfo* createInfo, gnSurface* surface);
|
gnReturnCode metalCreateSurface(gnInstance instance, gnMetalSurfaceCreateInfo* createInfo, gnSurface* surface);
|
||||||
|
gnReturnCode metalDestroySurface(gnInstance instance, gnSurface* surface);
|
||||||
|
|||||||
+1
-1
@@ -6,7 +6,7 @@ extern "C" {
|
|||||||
#include "GryphnLoader/src/instance/gryphn_instance.h"
|
#include "GryphnLoader/src/instance/gryphn_instance.h"
|
||||||
#include "GryphnLoader/src/device/gryphn_physical_device.h"
|
#include "GryphnLoader/src/device/gryphn_physical_device.h"
|
||||||
#include "GryphnLoader/src/device/gryphn_device.h"
|
#include "GryphnLoader/src/device/gryphn_device.h"
|
||||||
#include "GryphnLoader/src/surface/gryphn_metal_surface.h"
|
#include "GryphnLoader/src/surface/gryphn_surface.h"
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user