fnish metals new return codes
This commit is contained in:
@@ -7,5 +7,5 @@ typedef struct gnPlatformInstance_t {
|
|||||||
NSView* metalContentView;
|
NSView* metalContentView;
|
||||||
} gnPlatformInstance;
|
} gnPlatformInstance;
|
||||||
|
|
||||||
gnReturnCode createMetalInstance(gnInstanceHandle instance, gnInstanceInfo instanceInfo);
|
gnReturnCode createMetalInstance(gnInstanceHandle instance, gnInstanceCreateInfo* instanceInfo);
|
||||||
void destroyMetalInstance(gnInstance instance);
|
void destroyMetalInstance(gnInstance instance);
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
#include "metal_instance.h"
|
#include "metal_instance.h"
|
||||||
|
|
||||||
// metal instances are kinda useless
|
// metal instances are kinda useless
|
||||||
gnReturnCode createMetalInstance(gnInstanceHandle instance, gnInstanceInfo instanceInfo) {
|
gnReturnCode createMetalInstance(gnInstanceHandle instance, gnInstanceCreateInfo* instanceInfo) {
|
||||||
if (instance->instance == NULL) instance->instance = malloc(sizeof(gnPlatformInstance));
|
if (instance->instance == NULL) instance->instance = malloc(sizeof(gnPlatformInstance));
|
||||||
return GN_SUCCESS;
|
return GN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@@ -87,7 +87,7 @@ gnReturnCode createMetalGraphicsPipeline(gnGraphicsPipeline graphicsPipeline, gn
|
|||||||
});
|
});
|
||||||
[shaderLib release];
|
[shaderLib release];
|
||||||
free((void*)shaderCode);
|
free((void*)shaderCode);
|
||||||
return GN_FAILED_TO_CREATE_SHADER_MODULE;
|
return GN_FAILED_CREATE_OBJECT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ gnReturnCode createMetalGraphicsPipeline(gnGraphicsPipeline graphicsPipeline, gn
|
|||||||
[descriptor release];
|
[descriptor release];
|
||||||
[vertexDescriptor release];
|
[vertexDescriptor release];
|
||||||
[error release];
|
[error release];
|
||||||
if (graphicsPipeline->graphicsPipeline->graphicsPipeline == nil) return GN_FAILED_TO_CREATE_GRAPHICS_PIPELINE;
|
if (graphicsPipeline->graphicsPipeline->graphicsPipeline == nil) return GN_FAILED_CREATE_OBJECT;
|
||||||
return GN_SUCCESS;
|
return GN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -8,7 +8,7 @@ gnReturnCode metalPresent(gnOutputDeviceHandle device, gnPresentInfo info) {
|
|||||||
for (int i =0 ; i < info.presentationQueueCount; i++) {
|
for (int i =0 ; i < info.presentationQueueCount; i++) {
|
||||||
info.presentationQueues[i]->info.surface->windowSurface->layer.device = device->outputDevice->device;
|
info.presentationQueues[i]->info.surface->windowSurface->layer.device = device->outputDevice->device;
|
||||||
id<CAMetalDrawable> drawable = [info.presentationQueues[i]->info.surface->windowSurface->layer nextDrawable];
|
id<CAMetalDrawable> drawable = [info.presentationQueues[i]->info.surface->windowSurface->layer nextDrawable];
|
||||||
if (drawable == nil) return GN_FAILED_TO_CREATE_FRAMEBUFFER;
|
if (drawable == nil) return GN_UNKNOWN_ERROR;
|
||||||
|
|
||||||
__block gnPresentationQueue presentationQueue = info.presentationQueues[i];
|
__block gnPresentationQueue presentationQueue = info.presentationQueues[i];
|
||||||
__block uint32_t imageIndex = info.imageIndices[i];
|
__block uint32_t imageIndex = info.imageIndices[i];
|
||||||
@@ -54,7 +54,7 @@ gnReturnCode metalPresentSync(gnOutputDeviceHandle device, gnPresentSyncInfo inf
|
|||||||
for (int i =0 ; i < info.presentationQueueCount; i++) {
|
for (int i =0 ; i < info.presentationQueueCount; i++) {
|
||||||
if (info.presentationQueues[i]->info.surface->windowSurface->layer.device == nil) info.presentationQueues[i]->info.surface->windowSurface->layer.device = device->outputDevice->device;
|
if (info.presentationQueues[i]->info.surface->windowSurface->layer.device == nil) info.presentationQueues[i]->info.surface->windowSurface->layer.device = device->outputDevice->device;
|
||||||
id<CAMetalDrawable> drawable = [info.presentationQueues[i]->info.surface->windowSurface->layer nextDrawable];
|
id<CAMetalDrawable> drawable = [info.presentationQueues[i]->info.surface->windowSurface->layer nextDrawable];
|
||||||
if (drawable == nil) return GN_FAILED_TO_CREATE_FRAMEBUFFER;
|
if (drawable == nil) return GN_UNKNOWN_ERROR;
|
||||||
|
|
||||||
__block gnPresentationQueue presentationQueue = info.presentationQueues[i];
|
__block gnPresentationQueue presentationQueue = info.presentationQueues[i];
|
||||||
__block uint32_t imageIndex = info.imageIndices[i];
|
__block uint32_t imageIndex = info.imageIndices[i];
|
||||||
|
@@ -5,20 +5,6 @@
|
|||||||
#include "sync/semaphore/metal_semaphore.h"
|
#include "sync/semaphore/metal_semaphore.h"
|
||||||
|
|
||||||
gnReturnCode createMetalPresentationQueue(gnPresentationQueueHandle presentationQueue, const gnDevice device, gnPresentationQueueInfo presentationInfo) {
|
gnReturnCode createMetalPresentationQueue(gnPresentationQueueHandle presentationQueue, const gnDevice device, gnPresentationQueueInfo presentationInfo) {
|
||||||
if (presentationInfo.minImageCount > 3) {
|
|
||||||
gnDebuggerSetErrorMessage(device->instance->debugger, (gnMessageData){
|
|
||||||
.message = gnCreateString("On Metal you cannot have more than 3 images in a presentation queue")
|
|
||||||
});
|
|
||||||
return GN_UNSUPPORTED_IMAGE_COUNT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (presentationInfo.minImageCount < 2) {
|
|
||||||
gnDebuggerSetErrorMessage(device->instance->debugger, (gnMessageData){
|
|
||||||
.message = gnCreateString("On Metal you cannot have less than 2 images in a presentation queue")
|
|
||||||
});
|
|
||||||
return GN_UNSUPPORTED_IMAGE_COUNT;
|
|
||||||
}
|
|
||||||
|
|
||||||
presentationQueue->presentationQueue = malloc(sizeof(struct gnPlatformPresentationQueue_t));
|
presentationQueue->presentationQueue = malloc(sizeof(struct gnPlatformPresentationQueue_t));
|
||||||
presentationQueue->presentationQueue->createdSize.x = presentationInfo.surface->windowSurface->layer.visibleRect.size.width;
|
presentationQueue->presentationQueue->createdSize.x = presentationInfo.surface->windowSurface->layer.visibleRect.size.width;
|
||||||
presentationQueue->presentationQueue->createdSize.y = presentationInfo.surface->windowSurface->layer.visibleRect.size.height;
|
presentationQueue->presentationQueue->createdSize.y = presentationInfo.surface->windowSurface->layer.visibleRect.size.height;
|
||||||
|
@@ -9,7 +9,7 @@ typedef enum gnReturnCode {
|
|||||||
GN_FAILED_TO_ALLOCATE_MEMORY, GN_OUT_OUT_HOST_MEMEORY,
|
GN_FAILED_TO_ALLOCATE_MEMORY, GN_OUT_OUT_HOST_MEMEORY,
|
||||||
GN_OUT_OUT_DEVICE_MEMORY, GN_OUT_OF_DATE_PRESENTATION_QUEUE,
|
GN_OUT_OUT_DEVICE_MEMORY, GN_OUT_OF_DATE_PRESENTATION_QUEUE,
|
||||||
GN_SUBOPTIMAL_PRESENTATION_QUEUE, GN_SURFACE_IN_USE, GN_UNSUPPORTED_FORMAT,
|
GN_SUBOPTIMAL_PRESENTATION_QUEUE, GN_SURFACE_IN_USE, GN_UNSUPPORTED_FORMAT,
|
||||||
GN_FAILED_TO_FIND_ENTRY_POINT,
|
GN_FAILED_TO_FIND_ENTRY_POINT, GN_FAILED_TO_LOAD_FUNCTION,
|
||||||
|
|
||||||
|
|
||||||
GN_UNLOADED_EXTENSION = -1,
|
GN_UNLOADED_EXTENSION = -1,
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include "stdint.h"
|
#include "stdint.h"
|
||||||
#include "utils/gryphn_error_code.h"
|
#include "core/gryphn_return_code.h"
|
||||||
#include "core/src/gryphn_handles.h"
|
#include "core/src/gryphn_handles.h"
|
||||||
#include "semaphore/gryphn_semaphore.h"
|
|
||||||
|
|
||||||
gnReturnCode gnPresentationQueueGetImageAsync(gnPresentationQueueHandle presentationQueue, uint64_t timeout, gnSemaphoreHandle semaphore, uint32_t* imageIndex);
|
gnReturnCode gnPresentationQueueGetImageAsync(gnPresentationQueueHandle presentationQueue, uint64_t timeout, gnSemaphoreHandle semaphore, uint32_t* imageIndex);
|
||||||
|
Reference in New Issue
Block a user