redo error handling
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
#include "metal_submit.h"
|
#include "metal_submit.h"
|
||||||
|
#include "instance/gryphn_debugger.h"
|
||||||
#include "synchronization/fence/gryphn_fence.h"
|
#include "synchronization/fence/gryphn_fence.h"
|
||||||
#include "sync/fence/metal_fence.h"
|
#include "sync/fence/metal_fence.h"
|
||||||
|
#include "instance/gryphn_instance.h"
|
||||||
|
|
||||||
gnReturnCode metalSyncSubmit(gnOutputDevice device, gnSubmitSyncInfo info) {
|
gnReturnCode metalSyncSubmit(gnOutputDevice device, gnSubmitSyncInfo info) {
|
||||||
if (device == GN_NULL_HANDLE) return GN_INVALID_HANDLE;
|
if (device == GN_NULL_HANDLE) return GN_INVALID_HANDLE;
|
||||||
@@ -21,12 +23,12 @@ gnReturnCode metalSyncSubmit(gnOutputDevice device, gnSubmitSyncInfo info) {
|
|||||||
mtlSignalSemaphore(info.signalSemaphores[c], commandBuffer);
|
mtlSignalSemaphore(info.signalSemaphores[c], commandBuffer);
|
||||||
|
|
||||||
[info.commandBuffers[i]->commandBuffer->commandBuffer addCompletedHandler:^(id<MTLCommandBuffer> buffer) {
|
[info.commandBuffers[i]->commandBuffer->commandBuffer addCompletedHandler:^(id<MTLCommandBuffer> buffer) {
|
||||||
if (buffer.error) {
|
if (buffer.error)
|
||||||
NSLog(@"Command buffer error: %s", buffer.error.localizedDescription.UTF8String);
|
gnDebuggerSetErrorMessage(info.commandBuffers[i]->instance->debugger, (gnMessageData){
|
||||||
}
|
.message = gnCombineStrings(gnCreateString("Command buffer failed to run "), buffer.error.localizedDescription.UTF8String)
|
||||||
if (atomic_fetch_sub_explicit(&buffersLeft, 1, memory_order_acq_rel) == 1) {
|
});
|
||||||
|
if (atomic_fetch_sub_explicit(&buffersLeft, 1, memory_order_acq_rel) == 1)
|
||||||
[fenceToSignal->fence->event setSignaledValue:fenceToSignal->fence->currentValue];
|
[fenceToSignal->fence->event setSignaledValue:fenceToSignal->fence->currentValue];
|
||||||
}
|
|
||||||
}];
|
}];
|
||||||
|
|
||||||
[commandBuffer commit];
|
[commandBuffer commit];
|
||||||
|
Reference in New Issue
Block a user