return obj;
} else if (templ->target == PIPE_BUFFER) {
VkBufferCreateInfo bci = create_bci(screen, templ, templ->bind);
+ VkExternalMemoryBufferCreateInfo embci;
+
+ if (user_mem) {
+ embci.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO;
+ embci.pNext = bci.pNext;
+ embci.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT;
+ bci.pNext = &embci;
+ }
if (VKSCR(CreateBuffer)(screen->dev, &bci, NULL, &obj->buffer) != VK_SUCCESS) {
mesa_loge("ZINK: vkCreateBuffer failed");
} else if (ici.tiling == VK_IMAGE_TILING_OPTIMAL) {
shared = false;
}
+ } else if (user_mem) {
+ emici.sType = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO;
+ emici.pNext = ici.pNext;
+ emici.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT;
+ ici.pNext = &emici;
}
if (linear)