「Vulkan Memory Allocator」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
1行目: 1行目:
 
'''Vulkan Memory Allocator'''(通称:VMA)とは、[[GPUOpen]]が[[オープンソース]]のもとで[[開発]]している「[[Vulkan]]は[[GPU]]ごと(どころか[[デバイスドライバ]]ごと)に[[メモリアライメント]]の[[仕様]]がバラバラ」という絶望的な問題を解決してくれる[[ライブラリ]]です。
 
'''Vulkan Memory Allocator'''(通称:VMA)とは、[[GPUOpen]]が[[オープンソース]]のもとで[[開発]]している「[[Vulkan]]は[[GPU]]ごと(どころか[[デバイスドライバ]]ごと)に[[メモリアライメント]]の[[仕様]]がバラバラ」という絶望的な問題を解決してくれる[[ライブラリ]]です。
 +
 +
== 使い方 ==
 +
この[[ライブラリ]]の基本的な使い方はとてもシンプルだ。グローバルなVmaAllocatorオブジェクトを作成した後、バッファを作成するために必要な完全なコードは次のようになります。
 +
<source lang="c">
 +
VkBufferCreateInfo bufferInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
 +
bufferInfo.size = 65536;
 +
bufferInfo.usage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;
 +
 +
VmaAllocationCreateInfo allocInfo = {};
 +
allocInfo.usage = VMA_MEMORY_USAGE_AUTO;
 +
 +
VkBuffer buffer;
 +
VmaAllocation allocation;
 +
vmaCreateBuffer(allocator, &bufferInfo, &allocInfo, &buffer, &allocation, nullptr);
 +
</source>
 +
 +
この1回の関数呼び出しで
 +
# VkBuffer が作成されます。
 +
# 必要に応じて VkDeviceMemory ブロックが割り当てられます。
 +
# メモリブロックの未使用領域がこのバッファにバインドされます。
 +
 +
VmaAllocation は、このバッファに割り当てられたメモリを表すオブジェクトです。VkDeviceMemory のハンドルやオフセットなどのパラメータを問い合わせることができます。
  
 
== 外部リンク ==
 
== 外部リンク ==

2024年4月18日 (木) 01:18時点における版

Vulkan Memory Allocator(通称:VMA)とは、GPUOpenオープンソースのもとで開発している「VulkanGPUごと(どころかデバイスドライバごと)にメモリアライメント仕様がバラバラ」という絶望的な問題を解決してくれるライブラリです。

使い方

このライブラリの基本的な使い方はとてもシンプルだ。グローバルなVmaAllocatorオブジェクトを作成した後、バッファを作成するために必要な完全なコードは次のようになります。

VkBufferCreateInfo bufferInfo = { VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO };
bufferInfo.size = 65536;
bufferInfo.usage = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT;

VmaAllocationCreateInfo allocInfo = {};
allocInfo.usage = VMA_MEMORY_USAGE_AUTO;

VkBuffer buffer;
VmaAllocation allocation;
vmaCreateBuffer(allocator, &bufferInfo, &allocInfo, &buffer, &allocation, nullptr);

この1回の関数呼び出しで

  1. VkBuffer が作成されます。
  2. 必要に応じて VkDeviceMemory ブロックが割り当てられます。
  3. メモリブロックの未使用領域がこのバッファにバインドされます。

VmaAllocation は、このバッファに割り当てられたメモリを表すオブジェクトです。VkDeviceMemory のハンドルやオフセットなどのパラメータを問い合わせることができます。

外部リンク