Skip to content

Commit

Permalink
Fixed creating MoltenVk surface with agnostic backends such as SDL2 (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
jay3d authored Aug 15, 2023
1 parent f059531 commit 64e83a0
Showing 1 changed file with 20 additions and 5 deletions.
25 changes: 20 additions & 5 deletions src/renderer_vk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 64e83a0

Please sign in to comment.