Avant toutes choses : si vous avez besoin de plus d'informations auxquelles je n'aurais pas pensé, merci de me le dire gentiment ! Aussi, si vous avez besoin du code ENTIER (.hpp et .cpp) dites-le-moi aussi... agréablement !
Bonjour, c'est encore moi !
J'ai vraiment pas mal de problèmes avec le tuto Vulkan donc je reviens de nouveau vers vous puisque jusqu'ici, tous les problème se sont résolus soit par eux-même, soit par la communauté du forum.
Je donnerai cette fois-ci le plus de détails possibles pour éviter les jérémiades de certains. :/
Alors voilà ! J'ai un problème au niveau de la création de la swapchain. Voici les Validations Errors que l'exécution engendre :
Là encore, j'ai du mal à voir mon erreur sachant que j'ai suivi le tuto à la lettre prête (mais je ne doute pas qu'il y en a forcément une... quelque part). J'ai même copié/collé pour être sûr ! Malheureusement le problème persiste et je ne trouve pas de solution.
Je vous mets le lien du tuto sur la Swapchain ici !!!
Un "jérémiard" te dirait que les messages d'erreurs sont plutôt explicites mais qu'il ne prendra pas la peine de te les expliquer car tu n'as pas pris la peine de donner les messages d'erreurs sous une forme qui permettrait de les copier-coller dans notre plus grand ami à tous : Google.
(oui, les copies d'écran pour les messages d'erreurs, c'est du caca)
(Et Github est aussi un bon ami.)
- Edité par bacelar 20 août 2021 à 0:59:39
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Je n'y ai pas pensé, je ne poste pas de problèmes liés à la programmation depuis très longtemps (1 jour ou 2) donc je suis en apprentissage d'écriture de sujets liés au Code si on veut. Alors la prochaine fois essaie de le dire sur un autre ton, ça passera mieux, car la chose qu'on veut faire avec ce type de message ce n'est pas de te jeter des fleurs. Pourtant j'avais prévenu à la fin du message d'essayer de ne pas être désagréable quand une personne demande aimablement de l'aide et que si il y avait besoin de quoi que ce soit, de le demander dans le respect. Les forums sont un peu tous pareils on dirait. Ainsi pense à la courtoisie la prochaine fois.
Un petit "pourrais-tu faire en sorte qu'on puisse copier/coller s'il te plaît car les messages d'erreurs en capture d'écran c'est pas top" aurait été mieux reçu.
Et d'ailleurs, j'ai cherché sur Google mais j'ai rien trouvé de mon côté, donc je demandais à de "vraies" personnes plus compétentes que moi que je pensais d'ailleurs un minimum courtois pour me proposer des pistes ou bien des solutions. Espérons qu'une personne pourra en être à la hauteur. JE renvoie les messages d'erreurs demain pour que VOUS puissiez copier/coller sur "notre plus grand ami à tous, Google".
Bonne soirée.
PS : si tu les as compris sans copier/coller car ils sont plutôt explicites, pourquoi ce message presque inutile ?
D'où sort l'appel à vkGetPhysicalDeviceExternalImageFormatPropertiesNV ?
Ensuite il râle sur le format des images de ta swapchain. Tu as essayé d'autres formats que B8R8G8A8_SRGB ? (de mon côté, ma swapchain supporte aussi B8R8G8A8_UNORM, qui fonctionne, et après test _SRGB ne pose pas non plus de problème pour la création de la swapchain).
C'est bien sur l'appel à vkCreateSwapchainKHR que tu as ces erreurs de validation ? (je suis surpris de voir qu'il râle sur des appels à vkCreateImageView)
Si vous ne trouvez plus rien, cherchez autre chose.
D'où sort l'appel à vkGetPhysicalDeviceExternalImageFormatPropertiesNV ?
Je ne sais pas, je n'ai jamais écrit ça dans mon code...
dragonjoker a écrit:
Ensuite il râle sur le format des images de ta swapchain. Tu as essayé d'autres formats que B8R8G8A8_SRGB ? (de mon côté, ma swapchain supporte aussi B8R8G8A8_UNORM, qui fonctionne, et après test _SRGB ne pose pas non plus de problème pour la création de la swapchain).
Je vais essayer et je te dirai si ça fonctionne. (voir réponse ci-dessous)
dragonjoker a écrit:
C'est bien sur l'appel à vkCreateSwapchainKHR que tu as ces erreurs de validation ? (je suis surpris de voir qu'il râle sur des appels à vkCreateImageView)
Oui c'est sûr et certain ! Car j'ai utilisé le petit stop qu'on peut mettre à gauche du Code. Et lorsque vient la création de la swapchain, les validation errors me hurlent dessus. Pour le vkCreateImageView c'est parce que j'ai continué le tuto sur l'imageView.
code ici :
void HelloTriangleApp::createImageViews() {
swapChainImageViews.resize(swapChainImages.size());
for (size_t i = 0; i < swapChainImages.size(); i++) {
VkImageViewCreateInfo createInfo{};
createInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
createInfo.image = swapChainImages[i];
createInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; //Permet de traiter les images comme des textures 1D, 2D, 3D ou cubemap
createInfo.format = swapChainImageFormat;
createInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY;
createInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY;
createInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY;
createInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY;
//subresourceRange décrit l'utilisation de l'image et indique quelles parties de l'image devraient être accédées
createInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
createInfo.subresourceRange.baseMipLevel = 0;
createInfo.subresourceRange.levelCount = 1;
createInfo.subresourceRange.baseArrayLayer = 0;
createInfo.subresourceRange.layerCount = 1;
if (vkCreateImageView(device, &createInfo, nullptr, &swapChainImageViews[i]) != VK_SUCCESS) {
throw std::runtime_error("failed when creating the image view !");
}
}
}
Désolé pour le double message, mais sinon je dois attendre 24h pour pouvoir poster à la suite du message précédent ci-dessus
dragonjoker a écrit:
Ensuite il râle sur le format des images de ta swapchain. Tu as essayé d'autres formats que B8R8G8A8_SRGB ? (de mon côté, ma swapchain supporte aussi B8R8G8A8_UNORM, qui fonctionne, et après test _SRGB ne pose pas non plus de problème pour la création de la swapchain).
J'ai essayé et le B8R8G8A8_UNORM fait moins crier les validation layers (est-ce une bonne chose ?). Cependant 1 erreur persiste et la voici :
validation layer: Validation Error: [ UNASSIGNED-GeneralParameterError-ExtensionNotEnabled ] Object 0: VK_NULL_HANDLE, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0xe92b452d | Attemped to call vkGetPhysicalDeviceExternalImageFormatPropertiesNV() but its required extension VK_NV_external_memory_capabilities has not been enabled
Il dit que je n'ai pas activé une extension d'après ce que je comprends (serait-elle inaccessible ou indisponible ?) : VK_NV_external_memory_capabilities
Ensuite, lorsque je repasse en B8R8G8A8_SRGB, j'ai les même erreurs qu'auparavant.
Voici les toutes les erreurs pour ceux qui veulent pouvoir copier/coller :
validation layer: Validation Error: [ UNASSIGNED-GeneralParameterError-ExtensionNotEnabled ] Object 0: VK_NULL_HANDLE, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0xe92b452d | Attemped to call vkGetPhysicalDeviceExternalImageFormatPropertiesNV() but its required extension VK_NV_external_memory_capabilities has not been enabled
validation layer: Validation Error: [ VUID-VkSwapchainCreateInfoKHR-imageFormat-01778 ] Object 0: handle = 0x17ffe066698, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xc036022f | vkCreateSwapchainKHR(): pCreateInfo->imageFormat VK_FORMAT_B8G8R8A8_SRGB with tiling VK_IMAGE_TILING_OPTIMAL does not support usage that includes VK_IMAGE_USAGE_STORAGE_BIT. The Vulkan spec states: The implied image creation parameters of the swapchain must be supported as reported by vkGetPhysicalDeviceImageFormatProperties (https://vulkan.lunarg.com/doc/view/1.2.170.0/windows/1.2-extensions/vkspec.html#VUID-VkSwapchainCreateInfoKHR-imageFormat-01778)
validation layer: Validation Error: [ VUID-VkSwapchainCreateInfoKHR-imageFormat-01778 ] Object 0: handle = 0x17ffe066698, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xc036022f | vkGetPhysicalDeviceImageFormatProperties() unexpectedly failed, when called for vkCreateSwapchainKHR() validation with following params: format: VK_FORMAT_B8G8R8A8_SRGB, imageType: VK_IMAGE_TYPE_2D, tiling: VK_IMAGE_TILING_OPTIMAL, usage: VK_IMAGE_USAGE_TRANSFER_SRC_BIT|VK_IMAGE_USAGE_STORAGE_BIT|VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, flags: Unhandled VkImageCreateFlagBits. The Vulkan spec states: The implied image creation parameters of the swapchain must be supported as reported by vkGetPhysicalDeviceImageFormatProperties (https://vulkan.lunarg.com/doc/view/1.2.170.0/windows/1.2-extensions/vkspec.html#VUID-VkSwapchainCreateInfoKHR-imageFormat-01778)
validation layer: Validation Error: [ VUID-VkSwapchainCreateInfoKHR-imageFormat-01778 ] Object 0: handle = 0x17ffe066698, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xc036022f | vkCreateSwapchainKHR() called with a non-supported imageArrayLayers (i.e. 1). Maximum value returned by vkGetPhysicalDeviceImageFormatProperties() is 0 for imageFormat VK_FORMAT_B8G8R8A8_SRGB with tiling VK_IMAGE_TILING_OPTIMAL The Vulkan spec states: The implied image creation parameters of the swapchain must be supported as reported by vkGetPhysicalDeviceImageFormatProperties (https://vulkan.lunarg.com/doc/view/1.2.170.0/windows/1.2-extensions/vkspec.html#VUID-VkSwapchainCreateInfoKHR-imageFormat-01778)
validation layer: Validation Error: [ VUID-VkSwapchainCreateInfoKHR-imageFormat-01778 ] Object 0: handle = 0x17ffe066698, type = VK_OBJECT_TYPE_DEVICE; | MessageID = 0xc036022f | vkCreateSwapchainKHR() called with imageExtent = (800,600), which is bigger than max extent (0,0)returned by vkGetPhysicalDeviceImageFormatProperties(): for imageFormat VK_FORMAT_B8G8R8A8_SRGB with tiling VK_IMAGE_TILING_OPTIMAL The Vulkan spec states: The implied image creation parameters of the swapchain must be supported as reported by vkGetPhysicalDeviceImageFormatProperties (https://vulkan.lunarg.com/doc/view/1.2.170.0/windows/1.2-extensions/vkspec.html#VUID-VkSwapchainCreateInfoKHR-imageFormat-01778)
validation layer: Validation Error: [ VUID-VkImageViewCreateInfo-usage-02275 ] Object 0: handle = 0x5d11410000000004, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x618ab1e7 | vkCreateImageView(): pCreateInfo->format VK_FORMAT_B8G8R8A8_SRGB with tiling VK_IMAGE_TILING_OPTIMAL does not support usage that includes VK_IMAGE_USAGE_STORAGE_BIT. The Vulkan spec states: If usage contains VK_IMAGE_USAGE_STORAGE_BIT, then the image view's format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT (https://vulkan.lunarg.com/doc/view/1.2.170.0/windows/1.2-extensions/vkspec.html#VUID-VkImageViewCreateInfo-usage-02275)
validation layer: Validation Error: [ VUID-VkImageViewCreateInfo-usage-02275 ] Object 0: handle = 0x6dc7200000000005, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x618ab1e7 | vkCreateImageView(): pCreateInfo->format VK_FORMAT_B8G8R8A8_SRGB with tiling VK_IMAGE_TILING_OPTIMAL does not support usage that includes VK_IMAGE_USAGE_STORAGE_BIT. The Vulkan spec states: If usage contains VK_IMAGE_USAGE_STORAGE_BIT, then the image view's format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT (https://vulkan.lunarg.com/doc/view/1.2.170.0/windows/1.2-extensions/vkspec.html#VUID-VkImageViewCreateInfo-usage-02275)
validation layer: Validation Error: [ VUID-VkImageViewCreateInfo-usage-02275 ] Object 0: handle = 0x3ba5830000000006, type = VK_OBJECT_TYPE_IMAGE; | MessageID = 0x618ab1e7 | vkCreateImageView(): pCreateInfo->format VK_FORMAT_B8G8R8A8_SRGB with tiling VK_IMAGE_TILING_OPTIMAL does not support usage that includes VK_IMAGE_USAGE_STORAGE_BIT. The Vulkan spec states: If usage contains VK_IMAGE_USAGE_STORAGE_BIT, then the image view's format features must contain VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT (https://vulkan.lunarg.com/doc/view/1.2.170.0/windows/1.2-extensions/vkspec.html#VUID-VkImageViewCreateInfo-usage-02275)
essaie de faire un ctrl+f dans ton projet actif pour voir d'où vient l'appel à vkGetPhysicalDeviceExternalImageFormatPropertiesNV.
Pour les VkImageView, vu qu'ils dependent de VkImage qui dans ce cas precis dependent de la swapchain, ça te crée des erreurs en cascade. Il faut d'abord corriger le probleme de la swapchain.
Et pour l'erreur de la swapchain, on dirait que le code ne colle pas avec le message des VL. Rajoute un breakpoint juste avant vkCreateSwapchainKHR et regarde si "createInfo.imageUsage" vaut bien VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT.
essaie de faire un ctrl+f dans ton projet actif pour voir d'où vient l'appel à vkGetPhysicalDeviceExternalImageFormatPropertiesNV.
Et pour l'erreur de la swapchain, on dirait que le code ne colle pas avec le message des VL. Rajoute un breakpoint juste avant vkCreateSwapchainKHR et regarde si "createInfo.imageUsage" vaut bien VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT.
Je fais ça de ce pas !
(en cours...)
Mais comment tu veux que je vois la valeur de createInfo.imageUsage ? Via le code ? Si oui, j'ai bien marqué VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
Pas d'appel de vkGetPhysicalDeviceExternalImageFormatPropertiesNV() dans le Projet Actif.
eugchriss a écrit:
Pour les VkImageView, vu qu'ils dependent de VkImage qui dans ce cas precis dependent de la swapchain, ça te crée des erreurs en cascade. Il faut d'abord corriger le probleme de la swapchain.
Oui je sais, c'est pour cela que je cherche surtout pour la swapchain qui fait planter le reste
Cordialement
PS : Est-ce un problème d'extension ? Car la première erreur me met que VK_NV_external_memory_capabilities n'est pas activé et donc qu'il a échoué à appeler la fonction : vkGetPhysicalDeviceExternalImageFormatPropertiesNV()
Je suppose que seulement ça, ça ne vous aidera pas donc je vais mettre l'erreur en question :
validation layer: Validation Error: [ UNASSIGNED-GeneralParameterError-ExtensionNotEnabled ] Object 0: VK_NULL_HANDLE, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0xe92b452d | Attemped to call vkGetPhysicalDeviceExternalImageFormatPropertiesNV() but its required extension VK_NV_external_memory_capabilities has not been enabled
Quand je continue après ce bug, VS me dit qu'il manque des Sources :
Le pas à pas ne te donnera pas grand chose vu les VL fonctionnent à base de callback. Au mieux tu sauras juste quel appel a vulkan à causé le callback.
Haulun a écrit:
Mais comment tu veux que je vois la valeur de createInfo.imageUsage ? Via le code ? Si oui, j'ai bien marqué VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
Comme je disais ton code ne colle pas avec tes erreurs. Tu as surement une modification qui est faite quelque part. Du coup je cherche à verifier si ton appel à vkCreateSwapchainKHR reçoit bien ce qu'il est censé recevoir. Tu as juste à passer la souris sur la variable "createInfo" puis cliquer sur le menu deroulant qui apparait. Chez moi ça donne ceci. Si tu n'y arrives pas tu peux aussi aller dans l'onglet "variables locales" ou l'onglet "Automatique" qui sont situés en bas à gauche.
Haulun a écrit:
PS : Est-ce un problème d'extension ? Car la première erreur me met que VK_NV_external_memory_capabilities n'est pas activé et donc qu'il a échoué à appeler la fonction : vkGetPhysicalDeviceExternalImageFormatPropertiesNV()
En theorie, oui il te faut l'extension qui va avec mais vu que tu n'as aucun appel (à priori) à vkGetPhysicalDeviceExternalImageFormatPropertiesNV(), tu n'en as pas besoin. C'est pour ça que ton code est bizarre. Essaie de poster l'ensemble sur github.
Le pas à pas ne te donnera pas grand chose vu les VL fonctionnent à base de callback. Au mieux tu sauras juste quel appel a vulkan à causé le callback.
D'accord, je garde ça en tête
eugchriss a écrit:
Comme je disais ton code ne colle pas avec tes erreurs. Tu as surement une modification qui est faite quelque part. Du coup je cherche à verifier si ton appel à vkCreateSwapchainKHR reçoit bien ce qu'il est censé recevoir. Tu as juste à passer la souris sur la variable "createInfo" puis cliquer sur le menu deroulant qui apparait. Chez moi ça donne ceci. Si tu n'y arrives pas tu peux aussi aller dans l'onglet "variables locales" ou l'onglet "Automatique" qui sont situés en bas à gauche.
C'est bon, merci, je t'envoie ce que j'ai dans la liste déroulante si je passe la souris sur "createInfo" ici ! Perso je ne vois rien de différent à part le "minImageCount" qui est de 3 et le "height" qui est de 600px chez moi.
Les 3 derniers attributs qui n'a pas pu être pris dans la capture sont :
eugchriss a écrit:
En theorie, oui il te faut l'extension qui va avec mais vu que tu n'as aucun appel (à priori) à vkGetPhysicalDeviceExternalImageFormatPropertiesNV(), tu n'en as pas besoin. C'est pour ça que ton code est bizarre. Essaie de poster l'ensemble sur github.
J'ai réinstallé la dernière version du SDK mais rien n'a changé.
Cependant, je suis allé sur vkconfig puis j'ai cliqué sur Tools tout en haut pour enfin aller dans Vulkan Info. J'ai fait ensuite :
Device Properties and Extensions -> GPU0 -> Device Extensions.
Or je n'ai pas trouvé l'extension VK_NV_external_memory_capabilities :
Est-ce normal que je ne l'ai pas ?
Peut-être est-ce pour ça que j'ai le message d'erreur qui me dit que cette extensions n'est pas activé et donc qu'il n'a pas pu appeler vkGetPhysicalDeviceExternalImageFormatProperties().
Dois-je l'activer manuellement ?
Si oui, comment ?
De plus, quand je clique sur "launch" pour avoir le cube qui tourne, j'ai le même message !
Plus personne n'a de chose à proposer comme possible solution ?
Tant que ce ne sera pas fixé, je ne pourrais sûrement pas continuer le tuto (car je suppose que ça va faire boguer mon programme à un certain moment voire le faire crash).
Piqure de rappel :
Les validation errors font la gueule à cause d'une extension qui n'est apparemment pas activée.
Mon driver GPU est à jour mais quand je vais dans vkconfig, l'extension VK_NV_external_memory_capabilities n'y est pas (Comment l'ajouter ?)
Le SDK est à jour.
Aucun appel à une quelconque fonction appelée vkGetPhysicalDeviceExternalImageFormatProperties().
Je veux vraiment continuer le tuto Vulkan mais pour le moment, c'est mort :/
Le SDK est peut-être à jour, mais faudrait penser à configurer le bidule pour qu'il n'utilise pas ces vieilleries, non ?
Sinon, si vous avez les fichiers des symboles de tout ce fatras, collez un point d'arrêt sur l'appel de la fonction vkGetPhysicalDeviceExternalImageFormatPropertiesNV.
Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
Et sinon, à part cette erreur de validation, si tu choisis le format UNORM des images de ta swapchain, le reste fonctionne ?
Si j'utilise UNORM, il ne reste que la première erreur qui est :
validation layer: Validation Error: [ UNASSIGNED-GeneralParameterError-ExtensionNotEnabled ] Object 0: VK_NULL_HANDLE, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0xe92b452d | Attemped to call vkGetPhysicalDeviceExternalImageFormatPropertiesNV() but its required extension VK_NV_external_memory_capabilities has not been enabled
et les autres erreurs en dessous de celui-ci disparaissent donc oui, "le reste fonctionne".
bacelar a écrit:
Le SDK est peut-être à jour, mais faudrait penser à configurer le bidule pour qu'il n'utilise pas ces vieilleries, non ?
Si le reste fonctionne, ignore la pour l'instant...
Espérons que ça ne me plante pas le reste plus tard dans ce cas
Validation Error à la création de la Swapchain
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Si vous ne trouvez plus rien, cherchez autre chose.
Eug
Eug
Si vous ne trouvez plus rien, cherchez autre chose.
Eug
Si vous ne trouvez plus rien, cherchez autre chose.
Eug
Si vous ne trouvez plus rien, cherchez autre chose.
Si vous ne trouvez plus rien, cherchez autre chose.