EXT_external_objects stop working on 430.39

I have been using EXT_external_objects extension to do texture sharing cross process. Everything seems working fine until 430.39 on Windows

Our scenario

  1. GL application renders, and use a Vulcan texture as a bridge with this extension to share the rendered image to another GL application.

This case, it works fine

  1. Vulkan application renders, and use a Vulcan texture as a bridge with this extension to share the rendered image to another GL application.

In this case, broken image appears on the GL application.

To me, it looks like the memory layout are not agreed with the vulkan/gl.

Thank for the help!

the image configuration on the vulkan bridge image

VkExternalMemoryImageCreateInfoKHR external{};
external.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR;
external.pNext = nullptr;
external.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR;

VkImageCreateInfo image{};
image.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
image.pNext = &externalImageInfo;
image.imageType = VK_IMAGE_TYPE_2D;
image.format = VK_FORMAT_R8G8B8A8_SRGB;
image.extent.width = 1280;
image.extent.height = 960;
image.extent.depth = 1;
image.mipLevels = 1;
image.arrayLayers = 2;
image.samples = VK_SAMPLE_COUNT_1_BIT;
image.tiling = VK_IMAGE_TILING_OPTIMAL;
image.initialLayout = VK_IMAGE_LAYOUT_UNDEFINED;
image.usage = VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT;
image.queueFamilyIndexCount = 0;
image.pQueueFamilyIndices = nullptr;
image.sharingMode = VK_SHARING_MODE_EXCLUSIVE;
image.flags = 0;

… gl side
glTexStorageMem2DEXT(GL_TEXTURE_2D_ARRAY, 1, GL_SRGB8_ALPHA8, 1280, 960, handle_from_vk_expored, 0);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_TILING_EXT, GL_OPTIMAL_TILING_EXT);

I am able to get it working by specify the memory type to VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, the one with propertyFlags 0 seems causing issues. thanks