1

基本的なテクスチャ キューブの例を実装していますが、興味深い問題に遭遇しました。DescriptorWriteSet構造体をUpdateDescriptorSetsAPI 呼び出しに渡した後、すべてのフィールドがゼロに設定されています。その後にフィールドを読み取ろうとするコードはすべて、null ポインター例外を取得します (DescriptorBufferInfo ポインターが null であるため)。これは、VK_LAYER_LUNARG_core_validation が有効になっている場合にのみ発生し、無効にすると、API 呼び出しは正常に機能するようです。

私のサンプルは不完全なので、レイヤーを無効にしても機能するかどうか、またはコードにエラーがあるかどうかはわかりませ。ただし、 null ポインターを渡していないことは確かだったので、この呼び出しに渡される値を監視し、サニティ チェックを行っていました。これはバグですか、それとも予想される動作ですか?

  • ウィンドウズ10
  • LunarG SDK 1.0.8 (1.0.13 を使用したいのですが、これには新しい AMD ドライバーが必要で、コンピューターがブルー スクリーンになります)

編集:

私が与えた構造をゼロにするだけではありません.現在DescriptorWriteSet、定数配列の最初のものだけを渡しており、2番目も同様にゼロにしています. 実際、アレイ周辺のメモリを調べると、この層はアレイの両側のメモリに接触しています。これは私にはバグのように思えます...

編集2:

問題は私のコードに起因することがわかりました:

DescriptorSetLayoutBinding layout_bindings[]{
    DescriptorSetLayoutBinding()
        .Binding(0)
        .Descriptors(DescriptorType::UNIFORM_BUFFER, 1)
        .StageFlags(ShaderStageFlagBits::VERTEX),
    DescriptorSetLayoutBinding()
        .Binding(0)
        .Descriptors(DescriptorType::COMBINED_IMAGE_SAMPLER, 1)
        .StageFlags(ShaderStageFlagBits::FRAGMENT)
};

両方のレイアウト バインディングのバインディング インデックスは同じ 0 でした。もちろん、これが問題を引き起こすことは予想できますが、将来の API 呼び出しで渡される構造体がゼロ化されることはないと思います。このようなことは Github の問題として扱われます。なぜなら、半分以上の時間、私が問題を抱えているのは私のせいだからです。

4

1 に答える 1