2017-10-29 5 views
0

私はVULKAN料理とVULKAN学んでいる、と私は今、行き詰まりで自分自身を見つける:vkCreateDevice()が失敗する理由は何ですか?

私は拡張子をパスしようとした場合、すなわち、VK_KHR_SURFACE_EXTENSION_NAMEと私はに送信VkDeviceCreateInfo構造の拡張子のリストでVK_KHR_WIN32_SURFACE_EXTENSION_NAMEvkCreateDevice、機能がエラーなしで失敗しました(VK_SUCCESSを返すことはありません)

私はグラフィックスカードが私が通過しようとしているすべての拡張機能をサポートしていることを確認しました。バリデーションレイヤーから出力を読み込もうとしましたが、失敗の理由をキャッチしていないようです(VK_LAYER_LUNARG_api_dumpと標準検証レイヤーを有効にしました)。論理デバイスを作成するための

My機能はthis-

bool create_logical_device(VkPhysicalDevice &physDev, VkDevice &device, 
          std::vector<char const *> &desExts, 
          std::vector<queueInfo> &qInfos, 
          VkPhysicalDeviceFeatures &physDevFtrs) 
{ 
    std::vector<VkDeviceQueueCreateInfo> qCreateInfo; 
    std::vector<VkExtensionProperties> physDevExtProps; 

    if (!get_avl_phys_dev_exts(physDev, physDevExtProps)) 
    return false; 

    for (auto &ext : desExts) 
    { 
    if (!is_ext_available(physDevExtProps, ext)) 
     return false; 
    } 

    for (auto &i : qInfos) 
    { 
    qCreateInfo.push_back(
     {VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO, 
      nullptr, 
      0, 
      i.FamilyIndex, 
      (uint32_t)i.Priorities.size(), 
      i.Priorities.size() > 0 ? i.Priorities.data() : nullptr 
     }); 
    } 

    VkDeviceCreateInfo devCreateInfo = 
    { 
     VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, 
     nullptr, 
     0, 
     (uint32_t)qCreateInfo.size(), 
     qCreateInfo.size() > 0 ? qCreateInfo.data() : nullptr, 
     0, 
     nullptr, 
     (uint32_t)desExts.size(), 
     desExts.size() > 0 ? desExts.data() : nullptr, 
     &physDevFtrs 

    }; 



#ifdef ENABLE_VALIDATION 
    devCreateInfo.enabledLayerCount = (uint32_t)valLayers.size(); 
    devCreateInfo.ppEnabledLayerNames = valLayers.data(); 
#endif 

    if (vkCreateDevice(physDev, &devCreateInfo, nullptr, &device) != VK_SUCCESS) 
    { 
    std::cout << "Could not create logical device!" << std::endl; 
    return false; 
    } 

    std::cout << "Succesfully created logical device" << std::endl; 

    return true; 
} 

valLayersように見えるグローバルスコープで定数ベクトルです。

このエラーは、WindowsとLinuxの両方で発生するため、私の側では問題になる可能性があります。デバッガでコードを実行しても、私には何も明らかにされませんでした。私は何が間違っていますか?

+2

VK_SUCCESSが返されない場合は、代わりに何が返されますか? – Surt

+0

有効な拡張名を指定してもよろしいですか? VK_KHR_SURFACE_EXTENSION_NAMEはインスタンス拡張であるため、デバイスの作成時には提供しないでください。 – Ekzuzy

+0

私は起こっているものでなければならないと思います....私はチェックします。 –

答えて

0

有効な拡張名を指定してもよろしいですか? VK_KHR_SURFACE_EXTENSION_NAMEはインスタンス拡張であるため、デバイスの作成時には提供しないでください。

Vulkan Cookbook ;-)を読んでいただきありがとうございます。

関連する問題