reimplement gnCreateOutputDevice
This commit is contained in:
@@ -3,12 +3,13 @@
|
||||
#include "core/gryphn_platform_functions.h"
|
||||
#include "core/instance/init/gryphn_init.h"
|
||||
|
||||
gnReturnCode gnRegisterOutputDevice(gnOutputDevice* outputDevice, gnInstance* instance, const gnPhysicalDevice physicalDevice) {
|
||||
gnReturnCode gnCreateOutputDevice(gnOutputDevice* outputDevice, gnInstance* instance, struct gnOutputDeviceInfo_t deviceInfo) {
|
||||
outputDevice->deviceFunctions = malloc(sizeof(gnDeviceFunctions));
|
||||
gnLoadDeviceFunctions(instance->dynamicLib, outputDevice->deviceFunctions);
|
||||
outputDevice->physicalDevice = (gnPhysicalDevice*)(&physicalDevice);
|
||||
return instance->functions->_gnRegisterOutputDevice(outputDevice, instance, physicalDevice);
|
||||
outputDevice->instance = instance;
|
||||
// outputDevice->physicalDevice = (gnPhysicalDevice*)(&deviceInfo.physicalDevice);
|
||||
return instance->functions->_gnCreateOutputDevoce(outputDevice, instance, deviceInfo);
|
||||
}
|
||||
void gnDestroyOutputDevice(gnOutputDevice* device) {
|
||||
device->physicalDevice->instance->functions->_gnDestroyOutputDevice(device);
|
||||
device->instance->functions->_gnDestroyOutputDevice(device);
|
||||
}
|
||||
|
@@ -4,13 +4,27 @@
|
||||
struct gnPlatformOutputDevice_t;
|
||||
struct gnDeviceFunctions_t;
|
||||
|
||||
typedef struct gnDeviceQueueInfo_t {
|
||||
int queueIndex;
|
||||
int queueCount;
|
||||
// float* queuePriority;
|
||||
} gnDeviceQueueInfo;
|
||||
|
||||
typedef struct gnOutputDeviceInfo_t {
|
||||
uint32_t queueInfoCount;
|
||||
struct gnDeviceQueueInfo_t* queueInfos;
|
||||
struct gnPhysicalDeviceFeatures_t enabledFeatures;
|
||||
const gnPhysicalDevice physicalDevice;
|
||||
} gnOutputDeviceInfo;
|
||||
|
||||
typedef struct gnOutputDevice_t {
|
||||
struct gnPlatformOutputDevice_t* outputDevice;
|
||||
struct gnDeviceFunctions_t* deviceFunctions;
|
||||
gnPhysicalDevice* physicalDevice;
|
||||
gnInstance* instance;
|
||||
// gnPhysicalDevice* physicalDevice;
|
||||
} gnOutputDevice;
|
||||
|
||||
gnReturnCode gnRegisterOutputDevice(gnOutputDevice* outputDevice, gnInstance* instance, const gnPhysicalDevice physicalDevice);
|
||||
gnReturnCode gnCreateOutputDevice(gnOutputDevice* outputDevice, gnInstance* instance, struct gnOutputDeviceInfo_t deviceInfo);
|
||||
void gnDestroyOutputDevice(gnOutputDevice* device);
|
||||
|
||||
// inline void (*gnWaitForDevice)(const gnOutputDevice& device);
|
||||
|
@@ -8,6 +8,3 @@ gnPhysicalDevice* gnGetPhyscialDevices(gnInstance* instance, uint32_t* count) {
|
||||
}
|
||||
return devices;
|
||||
}
|
||||
gnBool gnDeviceSupportsAPI(const gnPhysicalDevice device) {
|
||||
return device.instance->functions->_gnDeviceSupportsAPI(device);
|
||||
}
|
||||
|
@@ -7,6 +7,10 @@ typedef struct gnPhysicalDeviceProperties_t {
|
||||
gnString name;
|
||||
} gnPhysicalDeviceProperties;
|
||||
|
||||
typedef struct gnPhysicalDeviceFeatures_t {
|
||||
// no freatures
|
||||
} gnPhysicalDeviceFeatures;
|
||||
|
||||
typedef enum gnQueueTypeFlags_e {
|
||||
GN_QUEUE_GRAPHICS = 0x00000001,
|
||||
GN_QUEUE_COMPUTE = 0x00000002,
|
||||
@@ -27,6 +31,7 @@ typedef struct gnPhysicalDeviceQueueProperties_t {
|
||||
typedef struct gnPhysicalDevice_t {
|
||||
struct gnPlatformPhysicalDevice_t* physicalDevice;
|
||||
struct gnPhysicalDeviceProperties_t properties;
|
||||
struct gnPhysicalDeviceFeatures_t features;
|
||||
struct gnPhysicalDeviceQueueProperties_t queueProperties;
|
||||
|
||||
gnInstance* instance;
|
||||
|
Reference in New Issue
Block a user