Giter Club home page Giter Club logo

Comments (11)

BearishSun avatar BearishSun commented on May 25, 2024 1

Definitely, I will be adding MoltenVK as soon as I get a chance. Metal support is a more of a long term goal.

I haven't tried it yet but it might literally be just the matter of installing the dependency, tweaking a few flags and such and getting it to work out of the box. Might be some kinks to work out afterwards.

from bsf.

christianclavet avatar christianclavet commented on May 25, 2024 1

Read it, MoltenVK was using a non-public interface that is not allowed by Apple. There is a pull request that has been submitted so it should work again.
link to article update

from bsf.

kattkieru avatar kattkieru commented on May 25, 2024

Is there a specific use case for Metal that MoltenVK doesn't cover?

from bsf.

BearishSun avatar BearishSun commented on May 25, 2024

The main concern is that MolenVK is a wrapper on top of Metal. I haven't used Metal myself yet but from what I've heard there are some considerable differences between it and Vulkan, which means the wrapper might need to do some extra busy-work, making it non-optimal.

Its probably not the worst thing ever, but since Metal is something users will use if they want maximum performance, having an unnecessary layer on top doesn't feel right. For that reason this is certainly not a huge priority, but will eventually be nice to have.

from bsf.

kattkieru avatar kattkieru commented on May 25, 2024

I haven't played with it too much yet (still learning Vulkan), but it would at least be a nice stop-gap since you already have a Vulkan backend and you'd get more features on Mac than their OpenGL support offers, plus it could be slipstreamed as a dependency.

Just a thought. :)

from bsf.

crookedbard avatar crookedbard commented on May 25, 2024

There is this post about: Apple Rejects iOS App For Using MoltenVK Vulkan, Alleged Non-Public API
link
Might be interesting to read.

from bsf.

remoe avatar remoe commented on May 25, 2024

Hi folks. I've tried to build lastest master with MoltenVK 1.1.85. I've changed the file FindVulkan.cmake from:

set(Vulkan_LIBNAME vulkan)
to
set(Vulkan_LIBNAME MoltenVK)

Then it builds a lot of files, but then it throws this compile error:

Source/Plugins/bsfVulkanRenderAPI/BsVulkanDevice.cpp:10:
Source/Plugins/bsfVulkanRenderAPI/ThirdParty/vk_mem_alloc.h:1688:14: fatal error: 'malloc.h' file not found
    #include <malloc.h> // for aligned_alloc()

Source/Plugins/bsfVulkanRenderAPI/ThirdParty/vk_mem_alloc.h:2105:16: error: use of undeclared identifier 'aligned_alloc'
        return VMA_SYSTEM_ALIGNED_MALLOC(size, alignment);

Source/Plugins/bsfVulkanRenderAPI/ThirdParty/vk_mem_alloc.h:4887:10: error: call to member function 'WriteNumber' is ambiguous
    json.WriteNumber(m_Suballocations.size() - m_FreeCount);

It doesn't compile because this file is outdated. After update this from here:
https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/blob/master/src/vk_mem_alloc.h

it compiles ;)

the next need more work:

bsf.git/Source/Plugins/bsfVulkanRenderAPI/BsVulkanCommandBuffer.cpp:26:1: error: static_assert failed "Other platforms go here"
static_assert(false, "Other platforms go here");

It needs a MacOS render window ...

btw: this project (bsf) has a really awesome CMake setup!

from bsf.

BearishSun avatar BearishSun commented on May 25, 2024

Nice work. You can probably grab most of the render window code from the OpenGL version in Source\Plugins\bsfGLRenderAPI\MacOS, and replace any OpenGL calls with Vulkan ones.

from bsf.

remoe avatar remoe commented on May 25, 2024

I've done a first try. Not all code compiles. It's only a rough skeleton:

remoe@e9fae5a

@BearishSun can you please shortly look at it? I need to know if i go further.

I don't know much about Vulkan. For example i don't know for what the extension are:

"VK_MVK_MACOS_SURFACE_EXTENSION_NAME"

remoe@e9fae5a#diff-4fe8409ac8a139179166584cc5ff8657R152

is it similar to "VK_KHR_WIN32_SURFACE_EXTENSION_NAME" on windows?

from bsf.

BearishSun avatar BearishSun commented on May 25, 2024

Yes that looks pretty close to what's its supposed to be.

Indeed VK_MVK_MACOS_SURFACE_EXTENSION_NAME is just a macOS version of that Win32 extension. Here's the window-system-specific part of the Vulkan spec that explains it: https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#wsi

from bsf.

remoe avatar remoe commented on May 25, 2024

Thanks for the info. I've pushed a WIP - integration of Vulkan in MacOSX:

#213

It compiles and links with MacOSX environment and with activated VulkanAPI.

from bsf.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.