[UE5.1.1] Supported Vulkan RHI returns no supported screen resolutions.

Before setting my render hardware interface to Vulkan, I check if Vulkan is supported:

FModuleManager::LoadModuleChecked<IDynamicRHIModule>(TEXT("VulkanRHI")).IsSupported()

Then I confirm Vulkan is the used RHI:

# Engine.ini
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
DefaultGraphicsRHI=DefaultGraphicsRHI_Vulkan

Next I start my project in PIE and I assert because one of the methods I call finds not a single supported screen resolution while using Vulkan:

verify(GDynamicRHI->RHIGetAvailableResolutions(ResolutionsArray, true))

I use a GXT 1070TI with the latest drivers. Are the above methods simply fragile? I can’t risk having an X amount of devices asserting because no resolutions are detected.

*Edit DX11 and DX12 work absolutely fine and return all resolutions. I am going to assume this is a bug on UE’s part, anyone can confirm?

Since setting an RHI requires a full app restart and testing for available resolutions requires the RHI to be loaded… This is breaking.

Wait what, it’s not been implemented?

void FVulkanDynamicRHI::RHIGetSupportedResolution( uint32 &Width, uint32 &Height )
{
}

bool FVulkanDynamicRHI::RHIGetAvailableResolutions(FScreenResolutionArray& Resolutions, bool bIgnoreRefreshRate)
{
	return false;
}

Bit late for Aprils fools guys!

Can't change resolution using Vulkan ??

When will VulkanRHI be updated to return screen resolutions?

heya, did you find a solution?

It’s not implemented in engine code, no solution

This is kind of ridiculous, are there really no workarounds in C++? I have yet to find any way to do this while using vulkan

1 Like

No, they like not implementing and breaking things.

updates?

Not on 5.2.

I’m still locking to the one resolution reported by GameUserSettings on Vulkan which is pathetic.

	FS_SupportedScreenResolutions SupportedScreenResolutions;

	if (GetCurrentRenderHardwareInterface() == E_RHIMode::RHI_VULKAN) {
		// Vulkan for whatever reason does not implement RHIGetAvailableResolutions, making it an odd one.
		// https://forums.unrealengine.com/t/ue5-1-1-supported-vulkan-rhi-returns-no-supported-screen-resolutions/873006
		SupportedScreenResolutions.Resolutions.Add(GameUserSettings->GetScreenResolution());
		SupportedScreenResolutions.CurrentResolutionIndex = 0;
	}

I’ve made a plugin that generates resolutions based on the monitor’s aspect ratio. It’s not perfect, but it’s better than nothing

You can download it from Github or Itch