Fixed creating MoltenVk surface with agnostic backends such as SDL2 (#3158)

This commit is contained in:
Jamil Halabi 2023-08-15 10:21:25 +03:00 committed by GitHub
parent f059531885
commit 64e83a0ec2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 5 deletions

View File

@ -6832,17 +6832,32 @@ VK_DESTROY
if (NULL != vkCreateMacOSSurfaceMVK)
{
NSWindow* window = (NSWindow*)(m_nwh);
NSView* contentView = (NSView*)window.contentView;
CAMetalLayer* layer = [CAMetalLayer layer];
CAMetalLayer* layer = (CAMetalLayer*)(m_nwh);
if ([window isKindOfClass:[NSWindow class]])
{
NSView *contentView = (NSView *)window.contentView;
layer = [CAMetalLayer layer];
[contentView setWantsLayer : YES];
[contentView setLayer : layer];
}
else if ([layer isKindOfClass:[CAMetalLayer class]])
{
NSView *contentView = (NSView *)layer.delegate;
window = contentView.window;
}
else
{
BX_WARN(0, "Unable to create MoltenVk surface. Please set platform data window to an NSWindow or CAMetalLayer");
return result;
}
if (m_resolution.reset & BGFX_RESET_HIDPI)
{
layer.contentsScale = [window backingScaleFactor];
}
[contentView setWantsLayer : YES];
[contentView setLayer : layer];
VkMacOSSurfaceCreateInfoMVK sci;
sci.sType = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK;
sci.pNext = NULL;