How do I use vkRegisterDisplayEventEXT to get vblank timing? Always returns VK_ERROR_INITIALIZATION_FAILED


I’m trying to implement direct mode rendering to an HMD using VK_EXT_direct_mode_display and VK_EXT_acquire_xlib_display.

I have successfully created a swapchain and rendered to the device :) So far so good.

Now I’m trying to use vkRegisterDisplayEventEXT from the VK_EXT_display_control extension to get vblank timing (VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT).

But the call to vkRegisterDisplayEventEXT always returns (VK_ERROR_INITIALIZATION_FAILED (-3))

But it still writes something to the output variable and if i try to run vkDestroyFence on that value i get a crash. The fact that it writes something even though it returns an error seems like a bug, but it seems unrelated to the failure.

I get no validation errors from the validation layer so I’m fairly sure that the parameters to the call are correct.

I’m running on Ubuntu 18.04 and have tried with the 418 and 430 drivers. I’m running on a GTX 2080 Ti.

Has anyone gotten vkRegisterDisplayEventEXT to work?