get image count and preferred surface format
This commit is contained in:
@@ -1,34 +1,6 @@
|
||||
|
||||
#include "gryphn_surface.h"
|
||||
#include "core/gryphn_platform_functions.h"
|
||||
|
||||
#ifdef GN_PLATFORM_LINUX
|
||||
#ifdef GN_WINDOW_X11
|
||||
gnReturnCode gnCreateX11WindowSurface(struct gnWindowSurface_t* windowSurface, gnInstance* instance, struct gnX11WindowSurfaceInfo_t createInfo) {
|
||||
return instance->functions->_gnCreateX11WindowSurface(windowSurface, instance, createInfo);
|
||||
}
|
||||
#endif
|
||||
#ifdef GN_WINDOW_WAYLAND
|
||||
gnReturnCode gnCreateWaylandWindowSurface(struct gnWindowSurface_t* windowSurface, gnInstance* instance, struct gnWaylandWindowSurfaceInfo_t createInfo) {
|
||||
return instance->functions->_gnCreateWaylandWindowSurface(windowSurface, instance, createInfo);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef GN_PLATFORM_WIN32
|
||||
gnReturnCode gnCreateWin32WindowSurface(struct gnWindowSurface_t* windowSurface, gnInstance* instance, struct gnWin32WindowSurfaceInfo_t createInfo) {
|
||||
return instance->functions->_gnCreateWin32WindowSurface(windowSurface, instance, createInfo);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef GN_PLATFORM_MACOS
|
||||
gnReturnCode gnCreateMacOSWindowSurface(struct gnWindowSurface_t* windowSurface, gnInstance* instance, struct gnMacOSWindowSurfaceInfo_t createInfo) {
|
||||
windowSurface->instance = instance;
|
||||
return instance->functions->_gnCreateMacOSWindowSurface(windowSurface, instance, createInfo);
|
||||
}
|
||||
#endif
|
||||
|
||||
void gnDestroyWindowSurface(struct gnWindowSurface_t *windowSurface) {
|
||||
windowSurface->instance->functions->_gnDestroyWindowSurface(windowSurface);
|
||||
}
|
||||
@@ -38,5 +10,54 @@ struct gnSurfaceFormat_t* gnGetSupportedSurfaceFormats(
|
||||
struct gnPhysicalDevice_t device,
|
||||
uint32_t* formatCount
|
||||
) {
|
||||
return windowSurface->instance->functions->_gnGetSupportedSurfaceFormats(windowSurface, device, formatCount);
|
||||
struct gnSurfaceDetails_t surfaceDetails = windowSurface->instance->functions->_gnGetSurfaceDetails(windowSurface, device);
|
||||
*formatCount = surfaceDetails.formatCount;
|
||||
return surfaceDetails.formats;
|
||||
}
|
||||
|
||||
gnBool gnIsSurfaceFormatSupported(
|
||||
struct gnWindowSurface_t* 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(
|
||||
struct gnWindowSurface_t* 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];
|
||||
}
|
||||
|
||||
int gnGetMinImageCount(struct gnWindowSurface_t surface, struct gnPhysicalDevice_t device) {
|
||||
struct gnSurfaceDetails_t surfaceDetails = surface.instance->functions->_gnGetSurfaceDetails(&surface, device);
|
||||
return surfaceDetails.minImageCount;
|
||||
}
|
||||
int gnGetMaxImageCount(struct gnWindowSurface_t surface, struct gnPhysicalDevice_t device) {
|
||||
struct gnSurfaceDetails_t surfaceDetails = surface.instance->functions->_gnGetSurfaceDetails(&surface, device);
|
||||
return surfaceDetails.maxImageCount;
|
||||
}
|
||||
|
Reference in New Issue
Block a user