1

全体vkDeviceMemoryが ( 経由で) マップされ、vkMapMemoryで割り当てられていない場合は、デバイスが書き込みを確認できるように、バッファーへの変更が行われた後に行う必要があります (ドキュメントに従って)。VK_MEMORY_PROPERTY_HOST_COHERENT_BITvkFlushMappedMemoryRanges

大きなバッファーの小さなセクションのみを変更しているため、影響を受ける領域のみをフラッシュしたいと考えています。したがって、さまざまなとフィールドを使用して複数のVkMappedMemoryRange構造を作成しますが、同じ を指します。これはすべて、期待どおりに機能するようです。ただし、有効にすると、エラーが発生します。offsetsizevkDeviceMemoryVK_LAYER_LUNARG_threading

THREADING ERROR : object of type VkDeviceMemory is recursively used in thread 24812

代わりに、配列ではなく単一のフラッシュ範囲のみを使用して複数回呼び出すとvkFlushMappedMemoryRanges、エラーは発生しません。同じバッファの複数のサブ範囲をフラッシュすることは有効なユースケースではありませんか?

4

1 に答える 1