pmtech icon indicating copy to clipboard operation
pmtech copied to clipboard

Vulkan support

Open ompadu opened this issue 4 years ago • 10 comments

Hi, I looked over at the trello wip and was wondering what are the current plans regarding completing the Vulkan backend. Thank you

ompadu avatar Jan 19 '21 20:01 ompadu

Hi,

I haven't worked on Vulkan for a little while because I didn't have a PC and was just running on Mac. I'm back up and running now so was going to look at Vulkan again although I don't have any concrete timelines but I did want to complete the Vulkan backend this year sometime.

Quite a lot of the samples already work, some have some validation errors but work OK and there are some missing features like MSAA resolving, mip map generation and so on but a lot of the core stuff is working, The CI is currently broken because of the Vulkan SDK installation on build agents, but everything should compile on windows if you have the Vulkan SDK.

If you want to use it or contribute to it feel free to create a fork and send PR's

polymonster avatar Jan 19 '21 21:01 polymonster

Thank you for the quick reply :)

It seems the Vulkan backend is further along than I realized. I've build all of the samples but every one I tried to run crashed on startup. I'll take a closer look at them.

ompadu avatar Jan 19 '21 22:01 ompadu

Ok if they are crashing I will take a look at them this weekend as well just to make sure they are running on my PC and refresh my memory as to what the status is of everything.

polymonster avatar Jan 19 '21 22:01 polymonster

The ones build with the default backend for win32 worked, so I assumed that the win32-vulkan ones were crashing because that backend might have been only a stub (which I learned is not the case).

I am using Vulkan 1.1.121.2 which is a bit old. Does pmtech have a minimum Vulkan version requirement?

For example basic_triangle is crashing at renderer_vulkan.cpp:1178

 vkGetPhysicalDeviceSurfaceFormatsKHR(_ctx.physical_device, _ctx.surface, &num_formats, nullptr);

with the output:

Exception thrown at 0x00007FF83A205C6D (vulkan-1.dll) in basic_triangle_d.exe: 0xC0000005: Access violation writing location 0x0000000000000000.

ompadu avatar Jan 20 '21 17:01 ompadu

Yeah I am not seeing that, I am using SDK 1.2.162 basic_triangle is working fine for me. It seems like it could be an SDK issue or a driver issue on your end.

polymonster avatar Jan 20 '21 19:01 polymonster

I'll set up a testing environment with a newer Vulkan SDK, see if that's why they crash. Most likely next weekend.

ompadu avatar Jan 20 '21 21:01 ompadu

A million years later I found time to setup Vulkan 1.2.182.0 and try to run the samples. They are still crashing even with this SDK version.

ompadu avatar Aug 02 '21 00:08 ompadu

After installing the Vulkan Runtime from LunarG's site it seems that many of the examples including basic_triangle are running. Some do not work as expected and some crash due to thrown exceptions and failed assertions, but i think that was to be expected.

ompadu avatar Aug 04 '21 21:08 ompadu

Yeah I use the SDK installed from LunarG. It is expected that some samples don't work... I don't know if/when I will get round to fixing them up. If you want to fix any of them yourself I will happily take pull requests.

polymonster avatar Aug 05 '21 09:08 polymonster

I was using the LunarG Vulkan SDK since the beginning. What was different this time, is that I installed the LunarG Vulkan Runtime as well, which seemingly overwrote the vulkan-1.dll from System32. I don't know if the previous vulkan-1.dll in System32 was from a runtime i've installed in the past or from the AMD driver, but it was responsible for the crash.

I wouldn't mind helping out, but i have only basic knowledge about Vulkan.

ompadu avatar Aug 05 '21 13:08 ompadu