「Vulkan Memory Allocator」の版間の差分

編集の要約なし
編集の要約なし
 
(同じ利用者による、間の9版が非表示)
1行目: 1行目:
'''Vulkan Memory Allocator'''(通称:VMA)とは、[[GPUOpen]][[オープンソース]]のもとで[[開発]]している「[[Vulkan]]は[[GPU]]ごと(どころか[[デバイスドライバ]]ごと)に[[メモリアライメント]]の[[仕様]]がバラバラ」という絶望的な問題を解決してくれる[[ライブラリ]]です。
'''Vulkan Memory Allocator'''(通称:VMA)とは、[[GPUOpen]](実質[[AMD]])が[[オープンソース]]のもとで[[開発]]している「[[Vulkan]]は[[GPU]]ごと(どころか[[デバイスドライバ]]ごと)に[[メモリアライメント]]の[[仕様]]がバラバラ」という絶望的な問題を全自動で解決してくれる[[ライブラリ]]です。
 
[[PC]]は実質[[NVIDIA]]、[[AMD]]、[[Intel]]の3社しかなく、[[Windows]]は[[マイクロソフト]]が音頭を取り、[[Linux]]は[[Steam]]の[[中の人]]が音頭を取り、[[デバイスドライバ]]のアップデートを半ば強制しているので割とマシです。
 
問題は[[スマホ]]。[[Android]]向けのクソ仕様の[[デバイスドライバ]]が量産され続けており、かつほとんどの[[スマホ]]はデバイスドライバが更新されずに(そもそも[[OS]]が更新されずに)放置されています。そのためほぼ同じ[[GPU]]でもスマホごとにデバイスドライバのバージョンが異なり、メモリアライメントの仕様も異なるというふざけた状況に陥っています。
 
そんなこともあり本プロジェクトの[[ソースコード]]は今なお勢いよく更新され続けています。


== 使い方 ==
== 使い方 ==
この[[ライブラリ]]の基本的な使い方はとてもシンプルだ。グローバルなVmaAllocatorオブジェクトを作成した後、バッファを作成するために必要な完全なコードは次のようになります。
この[[ライブラリ]]の基本的な使い方はとてもシンプルだ。グローバルなVmaAllocatorオブジェクトを作成した後、バッファを作成するために必要な完全なコードは次のようになります。
; Vulkan Memory Allocatorを使ってVkBufferを確保する例
<source lang="c">
<source lang="c">
VkBufferCreateInfo bufferInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
VkBufferCreateInfo bufferInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
22行目: 30行目:


VmaAllocation は、このバッファに割り当てられたメモリを表すオブジェクトです。VkDeviceMemory のハンドルやオフセットなどのパラメータを問い合わせることができます。
VmaAllocation は、このバッファに割り当てられたメモリを表すオブジェクトです。VkDeviceMemory のハンドルやオフセットなどのパラメータを問い合わせることができます。
== 関連項目 ==
* [[主なグラフィックスAPIのメモリアライメント]]
* [[GPUOpen]]


== 外部リンク ==
== 外部リンク ==