zeux / niagara

A Vulkan renderer written from scratch on stream
MIT License
1.26k stars 72 forks source link

Should check device features are actually available before enabling #9

Closed YunHsiao closed 4 years ago

YunHsiao commented 4 years ago

Tested on the latest AMD driver 19.50.29.20, RX550, some of the device features are not available when queried while the actual functionality seems to work fine. Skipping the check would lead to a strange validation error indicating device creation failure.

zeux commented 4 years ago

I don't think this change is correct. A lot of the features here are used by the code and creating a device that doesn't support them will just create further issues. What specific features aren't supported on AMD hardware?

YunHsiao commented 4 years ago

I was hesitate about this one too. It is definitely fishy, though. The unsupported features are: storagePushConstant8 shaderFloat16 shaderInt16

And if we skip all the checks there's a validation error stating: terminator_CreateDevice: Failed in ICD C:\Windows\System32\DriverStore\FileRepository\u0353575.inf_amd64_8e19095ae833d985\B353558\.\amdvlk64.dll vkCreateDevicecall

But as far as I can tell as soon as the checks were added everything works fine. (No mesh shader support of course)

Meanwhile all the texcoord(f16) data seems to be 0, though. (tried to output it as fragcolor)

YunHsiao commented 4 years ago

Now that I think of it, maybe the driver-specific workaround is just too weak to be included, so I guess I'll close this.