4

バルカン インスタンスを作成しようとしています。これが私のコードです:

vk::ApplicationInfo appInfo("Test", 1, nullptr, 0, 0);
vk::InstanceCreateInfo info;
info.pApplicationInfo(&appInfo);
vk::Instance instance;
const auto result = vk::createInstance(&info, nullptr, &instance);
std::cout << vkResultToString(result) << std::endl;

ただし、これは VK_ERROR_INCOMPATIBLE_DRIVER を返します。

独自のものを提供せずApplicationInfo、代わりにデフォルトで構築されたものを使用すると、機能します。

仕様書にはこう ある

0 の場合apiVersion、実装はそれを無視する必要があります。それ以外の場合、実装が要求されたものをサポートしていない場合は、apiVersion返さなければなりませんVK_ERROR_INCOMPATIBLE_DRIVER

ご覧のとおり、0に設定しました。私の理解では、エラーは発生apiVersionしません。VK_ERROR_INCOMPATIBLE_DRIVER

これはバグですか、それとも何かを忘れているか、考えが間違っていますか?

編集:

仕様の html バージョンでは、無視に関する部分apiVersionはありません。仕様の PDF バージョンは時代遅れですか?

編集:

apiVersion1.0.3 に設定している場合も機能します。

std::bitset<32> apiVersion;
apiVersion.set(22);
apiVersion.set(1);
apiVersion.set(0);
vk::ApplicationInfo appInfo("Test", 1, nullptr, 0, apiVersion.to_ulong());
4

3 に答える 3

2

あなたが見ているhtml仕様は古くなっていると思います:

リビジョン 0.9 暫定 2015 年 11 月 11 日水曜日 18:11:51 PST

apiVersionここhttps://www.khronos.org/registry/vulkan/specs/1.0/pdf/vkspec.pdfとここhttps://www.khronos.org/registry/vulkan/specs/1.0/xhtmlについての引用があります/vkspec.htmlこれらはバージョン 1.0 です

結果に関しては、バグかもしれません。どのドライバー/プラットフォームを使用していますか?

于 2016-02-17T15:34:59.950 に答える