External Textures/Images


I’m currently working on some Vulkan related topics for my company and I also came across the vk_external_memory extension and the OpenGL counterpart GL_EXT_memory_object. I got it to work with some different images but in some cases the images don’t get displayed correctly or even don’t show up at all. For example if I create an VkImage with VK_IMAGE_TILING_OPTIMAL and it has POT dimensions the image looks good on the GL side when I try to display it. In another case where the image is 1280x720 it looks like this when displayed on the GL side:

but it’s supposed to look like this:

I know that the image tiling is vendor specific and therefore a black box but I would assume when the image is exported on Vulkan side and imported on the GL side the image should be interpreted correctly when loaded as a texture. My question is if there is some restriction which kind of image dimensions are supported? Maybe it is an memory alignment issue. I really don’t know what I need to do to get the right image/memory size for an image with arbitrary dimensions. I also tried to display an image with 1920x1080 but the GL side doesn’t seem to like that either. If increase the image size to 1920x1088 the image shows up. As a note I have not tested how the image looks when rendered with Vulkan as I only need to create the image on the Vulkan side for GL to consume.

Thank you

PS: If you need any more details don’t shy away from asking. I can also post some example snippets if needed.