Hello.
I'm having troubles with picking correct device for Vulkan-OpenGL interop. On our PCs with AMD cards, OpenGLreports slightly different device UUID than Vulkan does.
I use the following code to get OpenGL device UUIDs:
Snippet
SnippetGLint numDevices = 0;
glGetIntegerv(GL_NUM_DEVICE_UUIDS_EXT, &numDevices);
for (auto i = 0; i < numDevices; i++) {
OpenGlUuid currentUuid;
glGetUnsignedBytei_vEXT(GL_DEVICE_UUID_EXT, GLuint(i), ¤tUuid[0]);
resultVector.push_back(currentUuid);
}
for device number i. And in Vulkan I use
VkPhysicalDeviceIDProperties::deviceUUID
It looks like the ID given by Vulkan is missing first 4 bytes. For the GPU on my PC OpenGL reports
0x1 0x0 0x0 0x0 0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
while Vulkan gives
0x3 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
Is there some particular scheme how this IDs are build/how to interpret and match them? Are they supposed to be equal/matchable at all (as they do on the other vendors GPUs we test our software on)?
Thank you.
Solved! Go to Solution.
Hi a.devaykin, This issue has been fixed by my team member, Thanks for your report!
Hi a.devaykin,
Thank you for your query. Our OpenGL & Vulkan developer forum seems better place to ask this query, so I'm moving it there. Also I have added you in the DevGurus 's whitelist.
Thanks.
Moreover, the latest driver update seems to have changed both UUID reported by OpenGL and by Vulkan. Not they have nothing in common at all.
Anybody? Does anybody know?
Hi a.devaykin, Thanks for your report! Does your app works well on NV's platform?
Hello.
Sorry I posted the wrong code - it was for getting LUID from DirectX for Vulkan-DirectX interop. This part works - LUID from Vulkan and LUID from DirectX match. I've updated post to have the correct snippet.
What does not work is matching UUID from OpenGL and Vulkan for at least AMD Radeon Pro WX9100. With the recent driver update UUID of that GPU changed, but still does not match between OpenGL and Vulkan. Nvidia GPUs and some other AMD GPUs like e.g. RX 5700 XT have matching UUIDs between Vulkan and OpenGL.
Side note: what else changed with the recent driver update is device name reported by Vulkan. Now it is "Unknown AMD GPU' for Radeon Pro WX9100, although OpenGL reports correct device name.
Thank you for support. Looking forward to hearing from you.
OK, I got it. Could you please provide a minimal code to reproduce this issue?
Hello.
I've created a repo with a very basic OpenGL and Vulkan context creation and device UUIDs printing: GitHub - adevaykin/AMDBugreportDeviceUUID: Repro case for AMD bug report
Should be enough to open in Visual Studio, change VulkanSDK path (include and lib) to a valid one, compile and run. Device UUIDs are listed in the terminal.
Please let me know if I can help further.
Thank you.
OK! Thanks for that, we will reproduce and solve this problem as soon as possible.
Thank you! Are there any public bug tracker where I could follow the status of the bug?
Hi a.devaykin, This issue has been fixed by my team member, Thanks for your report!
Thanks!