rename to projects (DOES NOT COMPILE)
This commit is contained in:
75
projects/core/src/window_surface/gryphn_surface.c
Normal file
75
projects/core/src/window_surface/gryphn_surface.c
Normal file
@@ -0,0 +1,75 @@
|
||||
#include "gryphn_surface.h"
|
||||
#include "gryphn_platform_functions.h"
|
||||
|
||||
void gnDestroyWindowSurface(gnWindowSurfaceHandle windowSurface) {
|
||||
windowSurface->instance->functions->_gnDestroyWindowSurface(windowSurface);
|
||||
}
|
||||
|
||||
struct gnSurfaceFormat_t* gnGetSupportedSurfaceFormats(
|
||||
gnWindowSurfaceHandle windowSurface,
|
||||
struct gnPhysicalDevice_t device,
|
||||
uint32_t* formatCount
|
||||
) {
|
||||
gnSurfaceDetails surfaceDetails = windowSurface->instance->functions->_gnGetSurfaceDetails(windowSurface, device);
|
||||
*formatCount = surfaceDetails.formatCount;
|
||||
return surfaceDetails.formats;
|
||||
}
|
||||
|
||||
gnBool gnIsSurfaceFormatSupported(
|
||||
gnWindowSurfaceHandle windowSurface,
|
||||
struct gnPhysicalDevice_t device,
|
||||
struct gnSurfaceFormat_t format
|
||||
) {
|
||||
uint32_t formatCount = 0;
|
||||
gnSurfaceFormat* formats = gnGetSupportedSurfaceFormats(windowSurface, device, &formatCount);
|
||||
for (int i = 0; i < formatCount; i++) {
|
||||
if (formats[i].format == format.format && formats[i].colorSpace == format.colorSpace) {
|
||||
return gnTrue;
|
||||
}
|
||||
}
|
||||
return gnFalse;
|
||||
}
|
||||
|
||||
struct gnSurfaceFormat_t gnGetPreferredSurfaceFormat(
|
||||
gnWindowSurfaceHandle windowSurface,
|
||||
struct gnPhysicalDevice_t device,
|
||||
struct gnSurfaceFormat_t format
|
||||
) {
|
||||
uint32_t formatCount = 0;
|
||||
gnSurfaceFormat* formats = gnGetSupportedSurfaceFormats(windowSurface, device, &formatCount);
|
||||
for (int i = 0; i < formatCount; i++) {
|
||||
if (formats[i].format == format.format && formats[i].colorSpace == format.colorSpace) {
|
||||
return formats[i];
|
||||
}
|
||||
}
|
||||
|
||||
// will attempt to give you a simmilar format that either matches the Image format and the Color space
|
||||
for (int i = 0; i < formatCount; i++) {
|
||||
if (formats[i].format == format.format || formats[i].colorSpace == format.colorSpace) {
|
||||
return formats[i];
|
||||
}
|
||||
}
|
||||
|
||||
return formats[0];
|
||||
}
|
||||
|
||||
uint32_t gnGetMinImageCount(gnWindowSurfaceHandle surface, struct gnPhysicalDevice_t device) {
|
||||
gnSurfaceDetails surfaceDetails = surface->instance->functions->_gnGetSurfaceDetails(surface, device);
|
||||
return surfaceDetails.minImageCount;
|
||||
}
|
||||
uint32_t gnGetMaxImageCount(gnWindowSurfaceHandle surface, struct gnPhysicalDevice_t device) {
|
||||
gnSurfaceDetails surfaceDetails = surface->instance->functions->_gnGetSurfaceDetails(surface, device);
|
||||
return surfaceDetails.maxImageCount;
|
||||
}
|
||||
|
||||
uint32_t gnGetPreferredImageCount(gnWindowSurfaceHandle surface, struct gnPhysicalDevice_t device) {
|
||||
gnSurfaceDetails surfaceDetails = surface->instance->functions->_gnGetSurfaceDetails(surface, device);
|
||||
|
||||
uint32_t imageCount = surfaceDetails.minImageCount + 1;
|
||||
if (surfaceDetails.maxImageCount > 0 && imageCount > surfaceDetails.maxImageCount) {
|
||||
imageCount = surfaceDetails.maxImageCount;
|
||||
}
|
||||
return imageCount;
|
||||
}
|
||||
|
||||
gnSurfaceDetails gnGetSurfaceDetails(gnWindowSurfaceHandle surface, gnPhysicalDevice device) { return surface->instance->functions->_gnGetSurfaceDetails(surface, device); }
|
53
projects/core/src/window_surface/gryphn_surface.h
Normal file
53
projects/core/src/window_surface/gryphn_surface.h
Normal file
@@ -0,0 +1,53 @@
|
||||
#pragma once
|
||||
#include <platform/gryphn_platform_include.h>
|
||||
#include <utils/gryphn_image_format.h>
|
||||
#include <instance/gryphn_instance.h>
|
||||
#include "output_device/gryphn_physical_output_device.h"
|
||||
|
||||
typedef struct gnSurfaceFormat_t {
|
||||
gnImageFormat format;
|
||||
gnColorSpace colorSpace;
|
||||
} gnSurfaceFormat;
|
||||
|
||||
typedef struct gnSurfaceDetails {
|
||||
uint32_t formatCount;
|
||||
struct gnSurfaceFormat_t* formats;
|
||||
|
||||
uint32_t minImageCount, maxImageCount;
|
||||
gnUInt2 minImageSize, maxImageSize, currentSize;
|
||||
} gnSurfaceDetails;
|
||||
|
||||
#ifdef GN_REVEAL_IMPL
|
||||
struct gnWindowSurface_t {
|
||||
struct gnPlatformWindowSurface_t* windowSurface;
|
||||
gnInstanceHandle instance;
|
||||
};
|
||||
#endif
|
||||
// typedef struct gnWindowSurface_t* gnWindowSurfaceHandle;
|
||||
|
||||
|
||||
void gnDestroyWindowSurface(gnWindowSurfaceHandle windowSurface);
|
||||
struct gnSurfaceFormat_t* gnGetSupportedSurfaceFormats(
|
||||
gnWindowSurfaceHandle windowSurface,
|
||||
struct gnPhysicalDevice_t device,
|
||||
uint32_t* formatCount
|
||||
);
|
||||
gnBool gnIsSurfaceFormatSupported(
|
||||
gnWindowSurfaceHandle windowSurface,
|
||||
struct gnPhysicalDevice_t device,
|
||||
struct gnSurfaceFormat_t format
|
||||
);
|
||||
// this function will give you you're preferred surface format
|
||||
// unless its not supported then it will give you the first supported surface format
|
||||
// at some point this function will attempt to give you the most simmilar surface format
|
||||
struct gnSurfaceFormat_t gnGetPreferredSurfaceFormat(
|
||||
gnWindowSurfaceHandle windowSurface,
|
||||
struct gnPhysicalDevice_t device,
|
||||
struct gnSurfaceFormat_t format
|
||||
);
|
||||
uint32_t gnGetMinImageCount(gnWindowSurfaceHandle surface, struct gnPhysicalDevice_t device);
|
||||
uint32_t gnGetMaxImageCount(gnWindowSurfaceHandle surface, struct gnPhysicalDevice_t device);
|
||||
uint32_t gnGetPreferredImageCount(gnWindowSurfaceHandle surface, struct gnPhysicalDevice_t device);
|
||||
|
||||
|
||||
gnSurfaceDetails gnGetSurfaceDetails(gnWindowSurfaceHandle surface, gnPhysicalDevice device);
|
@@ -0,0 +1,35 @@
|
||||
#include "gryphn_surface_create_functions.h"
|
||||
#include "instance/gryphn_instance.h"
|
||||
#include "gryphn_platform_functions.h"
|
||||
|
||||
#ifdef GN_PLATFORM_LINUX
|
||||
#ifdef GN_WINDOW_X11
|
||||
gnReturnCode gnCreateX11WindowSurface(gnWindowSurfaceHandle* windowSurface, gnInstanceHandle instance, gnX11WindowSurfaceInfo createInfo) {
|
||||
*windowSurface = malloc(sizeof(struct gnWindowSurface_t));
|
||||
(*windowSurface)->instance = instance;
|
||||
return instance->functions->_gnCreateX11WindowSurface(*windowSurface, instance, createInfo);
|
||||
}
|
||||
#endif
|
||||
#ifdef GN_WINDOW_WAYLAND
|
||||
gnReturnCode gnCreateWaylandWindowSurface(gnWindowSurfaceHandle* windowSurface, gnInstanceHandle instance, struct gnWaylandWindowSurfaceInfo_t createInfo) {
|
||||
*windowSurface = malloc(sizeof(struct gnWindowSurface_t));
|
||||
return instance->functions->_gnCreateWaylandWindowSurface(windowSurface, instance, createInfo);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef GN_PLATFORM_WIN32
|
||||
gnReturnCode gnCreateWin32WindowSurface(gnWindowSurfaceHandle* windowSurface, gnInstanceHandle instance, struct gnWin32WindowSurfaceInfo_t createInfo) {
|
||||
*windowSurface = malloc(sizeof(struct gnWindowSurface_t));
|
||||
return instance->functions->_gnCreateWin32WindowSurface(windowSurface, instance, createInfo);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef GN_PLATFORM_MACOS
|
||||
gnReturnCode gnCreateMacOSWindowSurface(gnWindowSurfaceHandle* windowSurface, gnInstanceHandle instance, struct gnMacOSWindowSurfaceInfo_t createInfo) {
|
||||
*windowSurface = malloc(sizeof(struct gnWindowSurface_t));
|
||||
(*windowSurface)->instance = instance;
|
||||
return instance->functions->_gnCreateMacOSWindowSurface(*windowSurface, instance, createInfo);
|
||||
}
|
||||
#endif
|
@@ -0,0 +1,45 @@
|
||||
#pragma once
|
||||
#ifndef GN_WINDOW_X11
|
||||
#define GN_WINDOW_X11
|
||||
#endif
|
||||
#include <platform/gryphn_platform_include.h>
|
||||
#include <gryphn_handles.h>
|
||||
#include <utils/gryphn_error_code.h>
|
||||
|
||||
|
||||
#ifdef GN_PLATFORM_LINUX
|
||||
#ifdef GN_WINDOW_X11
|
||||
typedef struct gnX11WindowSurfaceInfo {
|
||||
Display* display;
|
||||
Window window;
|
||||
} gnX11WindowSurfaceInfo;
|
||||
|
||||
gnReturnCode gnCreateX11WindowSurface(gnWindowSurfaceHandle* windowSurface, gnInstanceHandle instance, gnX11WindowSurfaceInfo createInfo);
|
||||
#endif
|
||||
#ifdef GN_WINDOW_WAYLAND
|
||||
typedef struct gnWaylandWindowSurfaceInfo_t {
|
||||
wl_display* display;
|
||||
wl_surface* surface;
|
||||
} gnWaylandWindowSurfaceInfo;
|
||||
|
||||
gnReturnCode gnCreateWaylandWindowSurface(gnWindowSurfaceHandle* windowSurface, gnInstanceHandle instance, struct gnWaylandWindowSurfaceInfo_t createInfo);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef GN_PLATFORM_WIN32
|
||||
typedef struct gnWin32WindowSurfaceInfo_t {
|
||||
HWND* window;
|
||||
HINSTANCE* instance;
|
||||
} gnWin32WindowSurfaceInfo;
|
||||
|
||||
gnReturnCode gnCreateWin32WindowSurface(gnWindowSurfaceHandle* windowSurface, gnInstanceHandle instance, struct gnWin32WindowSurfaceInfo_t createInfo);
|
||||
#endif
|
||||
|
||||
#ifdef GN_PLATFORM_MACOS
|
||||
typedef struct gnMacOSWindowSurfaceInfo_t {
|
||||
CAMetalLayer* layer;
|
||||
} gnMacOSWindowSurfaceInfo;
|
||||
|
||||
gnReturnCode gnCreateMacOSWindowSurface(gnWindowSurfaceHandle* windowSurface, gnInstanceHandle instance, struct gnMacOSWindowSurfaceInfo_t createInfo);
|
||||
#endif
|
Reference in New Issue
Block a user