update stuff

This commit is contained in:
Greg Wells
2025-06-03 13:04:59 -04:00
parent 3a32b996e1
commit cbfd6743f6
2 changed files with 19 additions and 14 deletions

View File

@@ -15,12 +15,8 @@
#endif #endif
static gnReturnCode gnCreateGLFWWindowSurface(struct gnWindowSurface_t* windowSurface, struct gnInstance_t* instance, GLFWwindow* window) { static gnReturnCode gnCreateGLFWWindowSurface(struct gnWindowSurface_t* windowSurface, struct gnInstance_t* instance, GLFWwindow* window) {
MTKView* view = gnCreateMTKView(glfwGetCocoaWindow(window));
gnWindowSetMTKView(glfwGetCocoaWindow(window), view);
CAMetalLayer* layer = gnGetCAMetalLayer(glfwGetCocoaWindow(window));
gnMacOSWindowSurfaceInfo surfaceCreateInfo = { gnMacOSWindowSurfaceInfo surfaceCreateInfo = {
.layer = layer .layer = gnCreateCAMetalLayer(glfwGetCocoaWindow(window))
}; };
return gnCreateMacOSWindowSurface(windowSurface, instance, surfaceCreateInfo); return gnCreateMacOSWindowSurface(windowSurface, instance, surfaceCreateInfo);

View File

@@ -31,15 +31,17 @@ gnReturnCode gnPresentFn(struct gnOutputDevice_t* device, struct gnPresentInfo_t
id<MTLBlitCommandEncoder> blit = [commandBuffer blitCommandEncoder]; id<MTLBlitCommandEncoder> blit = [commandBuffer blitCommandEncoder];
[blit copyFromTexture:info.presentationQueues[0].images[info.imageIndices[0]].texture->texture for (int i =0 ; i < info.presentationQueueCount; i++) {
[blit copyFromTexture:info.presentationQueues[i].images[info.imageIndices[i]].texture->texture
sourceSlice:0 sourceSlice:0
sourceLevel:0 sourceLevel:0
sourceOrigin:(MTLOrigin){0, 0, 0} sourceOrigin:(MTLOrigin){0, 0, 0}
sourceSize:(MTLSize){info.presentationQueues[0].info.imageSize.x, info.presentationQueues[0].info.imageSize.y, 1} sourceSize:(MTLSize){info.presentationQueues[i].info.imageSize.x, info.presentationQueues[i].info.imageSize.y, 1}
toTexture:drawable.texture toTexture:drawable.texture
destinationSlice:0 destinationSlice:0
destinationLevel:0 destinationLevel:0
destinationOrigin:(MTLOrigin){0, 0, 0}]; destinationOrigin:(MTLOrigin){0, 0, 0}];
}
[blit endEncoding]; [blit endEncoding];
@@ -48,5 +50,12 @@ gnReturnCode gnPresentFn(struct gnOutputDevice_t* device, struct gnPresentInfo_t
[commandBuffer waitUntilScheduled]; [commandBuffer waitUntilScheduled];
device->outputDevice->executingCommandBuffer = commandBuffer; device->outputDevice->executingCommandBuffer = commandBuffer;
for (int i = 0; i < info.presentationQueueCount; i++) {
if (info.presentationQueues[i].info.imageSize.x != info.presentationQueues[i].info.surface.windowSurface->layer.drawableSize.width ||
info.presentationQueues[i].info.imageSize.y != info.presentationQueues[i].info.surface.windowSurface->layer.drawableSize.height) {
return GN_SUBOPTIMAL_PRESENTATION_QUEUE;
}
}
return GN_SUCCESS; return GN_SUCCESS;
} }