3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

一人Vulkan プログラミンぐAdvent Calendar 2018

Day 6

初めてのVulkanプログラミング step2 論理デバイスの生成

Last updated at Posted at 2018-12-24

目次に戻る

ソースコードは以下の場所に置いておきます。各自のバージョンに合わせたプロパティ設定をしてから自由にご利用ください。
github: VulknAppAdocal2018

使用する物理デバイスを選択したら、それとインターフェースをとるための論理デバイスを設定する必要があります。論理デバイス作成のプロセスは、インスタンス作成のプロセスに似ています。deviceに必要な情報,作成したキューをなどを論理デバイスの作成時に指定します。またさまざまな要件がある場合は、同じ物理デバイスから複数の論理デバイスを作成することができます。

##作成するキューを指定する

論理デバイスの作成には、queuefamilyを指定してあげる必要があります。現時点では、グラフィクス用途の機能しか考えていません。

float queue_priorities[]{ 1.0f };
	VkDeviceQueueCreateInfo device_queue_create_info{};
	device_queue_create_info.sType = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO;
	device_queue_create_info.queueFamilyIndex = 0;// TODO Choose correct queuefamily index
	device_queue_create_info.queueCount = 4; // TODO  Check if this amount is valid
	device_queue_create_info.pQueuePriorities = queue_priorities;

vulkanでは、浮動小数点を利用してコマンドバッファのスケジューリングの優先度をキューに割り当てます。これは、単一のキューしかない場合にも必要です。

キューファミリーindexとキューカウントは、今回直接調べて代入していますが、動的にqueufamilyPropertiesを参考にして選択することができます。一例として自分は、以下のように設定します。

キューファミリーインデックス
queufamilyProperties[i].family_property[i].queueFlagsの中で自分の使いたいキューファミリー機能があるもの。

キューカウント
queue_family_property[i].queueCount

そして、vkCreateDevise関数を呼び出して、論理デバイスをインスタンス化する準備が整いました。

VkDeviceCreateInfo device_create_info{};
	device_create_info.sType = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO;
	device_create_info.queueCreateInfoCount = 1;
	device_create_info.pQueueCreateInfos = &device_queue_create_info;
	auto err = vkCreateDevice(_gpu, &device_create_info, nullptr, &_devise);

vkCreateDeviceのパラメータは、接続される物理デバイス、先ほど指定したキュー及び仕様情報、オプションの割り当てコールバックポインタ、作成した論理デバイスハンドルを格納する変数のポインタです。この関数の返り値を参照することで、作成が成功したかどうか確認することができます。

連絡先

tweeter: tositada_nakada
mail: nakadasanda@outlook.com

寄付

paypal: tositada_nakada
Amazon: 欲しいものリスト

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?