AnsweredAssumed Answered

Vulkan / OpenGL interoperability problems

Question asked by jherico on Sep 18, 2018
Latest reply on Sep 28, 2018 by jherico

I've been trying to work with a piece of example code that demonstrates Vulkan / OpenGL interoperability using `GL_EXT_external_objects` on the OpenGL side and VK_KHR_external_memory_win32 on the Vulkan side.  This works on my GeForce 1070, but testing it on my RX 580 it failed to produce the desired results.  After some experimentation, debugging and closer examination of the spec I realized that I was glossing over some key elements, like checking the supported tiling modes on the OpenGL side.

 

However, when I tried to do this I discovered that even though the RX 580 advertises GL_EXT_memory_object and GL_EXT_semaphore, it actually fails to fully implement them.  For instance, the GetUnsignedBytevEXT function isn't found by my GL loader.  Additionally, the following code generates errors on both calls to glGetIntervalformativ, reporting an invalid enum (presumably the tiling type enums added by the extension).

 

GLint numTilingTypes;

glGetInternalformativ(GL_TEXTURE_2D, GL_RGBA8, GL_NUM_TILING_TYPES_EXT, 1, &numTilingTypes);

std::vector<GLint> tilingTypes;

tilingTypes.resize(numTilingTypes);

glGetInternalformativ(GL_TEXTURE_2D, GL_RGBA8, GL_TILING_TYPES_EXT, numTilingTypes, tilingTypes.data());

 

Is the extension supposed to be considered functional?  If so, where are the missing functions and why don't these calls work?  If not, why is it advertised in the extensions list?

 

OS: Windows 10 64 bit

Driver: Radeon 18.9.1

 

 

 

Outcomes