generic OpenGL device

This commit is contained in:
Gregory Wells
2025-07-10 08:48:51 -04:00
parent f8bae555cf
commit 0dc2e035ab
5 changed files with 52 additions and 8 deletions

View File

@@ -1,13 +1,14 @@
#include "opengl_loader.h"
#include "instance/opengl_instance.h"
#include "surface/opengl_surface.h"
#include "device/opengl_physical_device.h"
gnInstanceFunctions loadOpenGLInstanceFunctions() {
return (gnInstanceFunctions){
._gnCreateInstance = createOpenGLInstance,
._gnDestroyInstance = destroyOpenGLInstance,
// ._gnGetPhysicalDevices = getMetalDevices,
// ._gnQueueCanPresentToSurface = metalCanQueuePresentToSurface,
._gnGetPhysicalDevices = getOpenGLDevice,
._gnQueueCanPresentToSurface = openGLQueueCanPresent,
// ._gnCreateOutputDevice = createMetalOutputDevice,
// ._gnDestroyOutputDevice = destroyMetalOutputDevice,
#ifdef GN_PLATFORM_LINUX

View File

@@ -0,0 +1,35 @@
#include "opengl_physical_device.h"
gnPhysicalDevice* getOpenGLDevice(gnInstanceHandle instance, uint32_t* deviceCount) {
*deviceCount = 1;
gnPhysicalDevice* devices = malloc(sizeof(gnPhysicalDevice));
gnPhysicalDevice device = {
.physicalDevice = malloc(sizeof(gnPlatformPhysicalDevice)),
.features = {
.maxColorSamples = GN_SAMPLE_BIT_1,
.maxDepthSamples = GN_SAMPLE_BIT_1,
.maxMemoryAllocations = 0x40000000,
.maxPushConstantSize = 256
},
.properties = {
.deviceType = GN_DEDICATED_DEVICE,
.name = gnCreateString("Generic OpenGL device")
},
.queueProperties = {
.queueCount = 1,
.queueProperties = (gnQueueProperties[1]){
(gnQueueProperties){
.queueCount = 1,
.queueType = GN_QUEUE_GRAPHICS
}
}
}
};
devices[0] = device;
return devices;
}
gnBool openGLQueueCanPresent(const gnPhysicalDevice device, uint32_t queueIndex, gnWindowSurfaceHandle windowSurface) {
return gnTrue;
}

View File

@@ -0,0 +1,8 @@
#pragma once
#include <GL/gl.h>
#include "output_device/gryphn_physical_output_device.h"
typedef struct gnPlatformPhysicalDevice_t {} gnPlatformPhysicalDevice;
gnPhysicalDevice* getOpenGLDevice(gnInstanceHandle instance, uint32_t* deviceCount);
gnBool openGLQueueCanPresent(const gnPhysicalDevice device, uint32_t queueIndex, gnWindowSurfaceHandle windowSurface);