---
generated_at: 2026-02-22 10:30:00
metrics:
  claims_total: 100
  claims_with_evidence: 98
  claims_without_evidence: 2
confidence_derived: 0.98
---

# 根拠レポート：backend-vulkan 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で△の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：98 / 100、根拠なし：2
- 優先レビュー（高）
  1. **UT-VLK-039/040**: カスタムローダー関連テスト - IMGUI_IMPL_VULKAN_NO_PROTOTYPESマクロ依存の動作確認が必要
  2. **UT-VLK-057**: Dynamic Rendering関連 - VK_VERSION_1_3またはVK_KHR_dynamic_rendering依存の動作

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `backends/imgui_impl_vulkan.h` - ヘッダファイル（公開API定義、構造体定義）
- E-02: `backends/imgui_impl_vulkan.cpp` 行1261-1316 - `ImGui_ImplVulkan_Init()` 関数実装
- E-03: `backends/imgui_impl_vulkan.cpp` 行1318-1332 - `ImGui_ImplVulkan_Shutdown()` 関数実装
- E-04: `backends/imgui_impl_vulkan.cpp` 行1334-1339 - `ImGui_ImplVulkan_NewFrame()` 関数実装
- E-05: `backends/imgui_impl_vulkan.cpp` 行523-674 - `ImGui_ImplVulkan_RenderDrawData()` 関数実装
- E-06: `backends/imgui_impl_vulkan.cpp` 行1357-1390 - `ImGui_ImplVulkan_AddTexture()` 関数実装
- E-07: `backends/imgui_impl_vulkan.cpp` 行1392-1398 - `ImGui_ImplVulkan_RemoveTexture()` 関数実装
- E-08: `backends/imgui_impl_vulkan.cpp` 行696-902 - `ImGui_ImplVulkan_UpdateTexture()` 関数実装
- E-09: `backends/imgui_impl_vulkan.cpp` 行1341-1353 - `ImGui_ImplVulkan_SetMinImageCount()` 関数実装
- E-10: `backends/imgui_impl_vulkan.cpp` 行1152-1178 - `ImGui_ImplVulkan_CreateMainPipeline()` 関数実装
- E-11: `backends/imgui_impl_vulkan.cpp` 行1232-1259 - `ImGui_ImplVulkan_LoadFunctions()` 関数実装
- E-12: `backends/imgui_impl_vulkan.cpp` 行1050-1150 - `ImGui_ImplVulkan_CreateDeviceObjects()` 関数実装
- E-13: `backends/imgui_impl_vulkan.cpp` 行1180-1200 - `ImGui_ImplVulkan_DestroyDeviceObjects()` 関数実装
- E-14: `backends/imgui_impl_vulkan.cpp` 行416-426 - `ImGui_ImplVulkan_MemoryType()` 関数実装
- E-15: `backends/imgui_impl_vulkan.cpp` 行439-442 - `AlignBufferSize()` 関数実装
- E-16: `backends/imgui_impl_vulkan.cpp` 行444-476 - `CreateOrResizeBuffer()` 関数実装
- E-17: `backends/imgui_impl_vulkan.cpp` 行478-520 - `ImGui_ImplVulkan_SetupRenderState()` 関数実装
- E-18: `backends/imgui_impl_vulkan.cpp` 行904-928 - `ImGui_ImplVulkan_CreateShaderModules()` 関数実装
- E-19: `backends/imgui_impl_vulkan.cpp` 行934-1048 - `ImGui_ImplVulkan_CreatePipeline()` 関数実装
- E-20: `backends/imgui_impl_vulkan.cpp` 行1435-1478 - `ImGui_ImplVulkanH_SelectSurfaceFormat()` 関数実装
- E-21: `backends/imgui_impl_vulkan.cpp` 行1480-1501 - `ImGui_ImplVulkanH_SelectPresentMode()` 関数実装
- E-22: `backends/imgui_impl_vulkan.cpp` 行1503-1530 - `ImGui_ImplVulkanH_SelectPhysicalDevice()` 関数実装
- E-23: `backends/imgui_impl_vulkan.cpp` 行1533-1544 - `ImGui_ImplVulkanH_SelectQueueFamilyIndex()` 関数実装
- E-24: `backends/imgui_impl_vulkan.cpp` 行1596-1606 - `ImGui_ImplVulkanH_GetMinImageCountFromPresentMode()` 関数実装
- E-25: `backends/imgui_impl_vulkan.cpp` 行1776-1860 - `ImGui_ImplVulkanH_CreateOrResizeWindow()` 関数実装
- E-26: `backends/imgui_impl_vulkan.cpp` 行1862-1882 - `ImGui_ImplVulkanH_DestroyWindow()` 関数実装
- E-27: `backends/imgui_impl_vulkan.cpp` 行1609-1772 - `ImGui_ImplVulkanH_CreateWindowSwapChain()` 関数実装
- E-28: `backends/imgui_impl_vulkan.cpp` 行1546-1594 - `ImGui_ImplVulkanH_CreateWindowCommandBuffers()` 関数実装
- E-29: `backends/imgui_impl_vulkan.cpp` 行1884-1895 - `ImGui_ImplVulkanH_DestroyFrame()` 関数実装
- E-30: `backends/imgui_impl_vulkan.cpp` 行1897-1902 - `ImGui_ImplVulkanH_DestroyFrameSemaphores()` 関数実装
- E-31: `backends/imgui_impl_vulkan.cpp` 行1400-1408 - `ImGui_ImplVulkan_DestroyFrameRenderBuffers()` 関数実装
- E-32: `backends/imgui_impl_vulkan.cpp` 行1410-1417 - `ImGui_ImplVulkan_DestroyWindowRenderBuffers()` 関数実装
- E-33: `backends/imgui_impl_vulkan.h` 行228-268 - `ImGui_ImplVulkanH_Window` 構造体定義
- E-34: `backends/imgui_impl_vulkan.cpp` 行428-436 - `check_vk_result()` 関数実装
- E-35: `backends/imgui_impl_vulkan.cpp` 行411-414 - `ImGui_ImplVulkan_GetBackendData()` 関数実装
- E-36: `backends/imgui_impl_vulkan.h` 行167-172 - `ImGui_ImplVulkan_RenderState` 構造体定義
- E-37: `backends/imgui_impl_vulkan.cpp` 行676-694 - `ImGui_ImplVulkan_DestroyTexture()` 関数実装
- E-38: `backends/imgui_impl_vulkan.h` 行84-92 - `ImGui_ImplVulkan_PipelineInfo` 構造体定義
- E-39: `backends/imgui_impl_vulkan.h` 行102-137 - `ImGui_ImplVulkan_InitInfo` 構造体定義

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 (UT-VLK-001) | ImGui_ImplVulkan_Initで有効な初期化情報により初期化成功 | E-02 | ○ |
| C-02 (UT-VLK-002) | BackendRendererNameが"imgui_impl_vulkan"に設定される | E-02 (行1288) | ○ |
| C-03 (UT-VLK-003) | BackendFlagsが正しく設定される | E-02 (行1289-1290) | ○ |
| C-04 (UT-VLK-004) | Instanceがnullでアサート発生 | E-02 (行1293) | ○ |
| C-05 (UT-VLK-005) | PhysicalDeviceがnullでアサート発生 | E-02 (行1294) | ○ |
| C-06 (UT-VLK-006) | Deviceがnullでアサート発生 | E-02 (行1295) | ○ |
| C-07 (UT-VLK-007) | Queueがnullでアサート発生 | E-02 (行1296) | ○ |
| C-08 (UT-VLK-008) | MinImageCount < 2でアサート発生 | E-02 (行1297) | ○ |
| C-09 (UT-VLK-009) | MinImageCount=2で正常初期化 | E-02 (行1297) | ○ |
| C-10 (UT-VLK-010) | ImageCount < MinImageCountでアサート発生 | E-02 (行1298) | ○ |
| C-11 (UT-VLK-011) | DescriptorPoolとDescriptorPoolSize両方指定でアサート | E-02 (行1299-1302) | ○ |
| C-12 (UT-VLK-012) | UseDynamicRendering時にRenderPass設定でアサート | E-02 (行1303-1304) | ○ |
| C-13 (UT-VLK-013) | Shutdownでリソース解放 | E-03 | ○ |
| C-14 (UT-VLK-014) | BackendRendererNameがクリアされる | E-03 (行1327) | ○ |
| C-15 (UT-VLK-015) | 未初期化でShutdownするとアサート | E-03 (行1321) | ○ |
| C-16 (UT-VLK-016) | NewFrameが正常実行 | E-04 | ○ |
| C-17 (UT-VLK-017) | 未初期化でNewFrame呼び出しでアサート | E-04 (行1337) | ○ |
| C-18 (UT-VLK-018) | RenderDrawDataで描画実行 | E-05 | ○ |
| C-19 (UT-VLK-019) | DisplaySize=0で早期リターン | E-05 (行526-529) | ○ |
| C-20 (UT-VLK-020) | TotalVtxCount=0でバッファ作成スキップ | E-05 (行556-591) | ○ |
| C-21 (UT-VLK-021) | カスタムパイプライン使用 | E-05 (行540-541) | ○ |
| C-22 (UT-VLK-022) | UserCallback呼び出し | E-05 (行618-627) | ○ |
| C-23 (UT-VLK-023) | ResetRenderStateコールバック処理 | E-05 (行622-623) | ○ |
| C-24 (UT-VLK-024) | 負のClipRectが0にクランプ | E-05 (行635-636) | ○ |
| C-25 (UT-VLK-025) | ClipRectがフレームバッファサイズにクランプ | E-05 (行637-638) | ○ |
| C-26 (UT-VLK-026) | AddTextureでテクスチャ登録 | E-06 | ○ |
| C-27 (UT-VLK-027) | DescriptorSet作成 | E-06 (行1364-1373) | ○ |
| C-28 (UT-VLK-028) | 内部DescriptorPool使用 | E-06 (行1361) | ○ |
| C-29 (UT-VLK-029) | RemoveTextureでテクスチャ削除 | E-07 | ○ |
| C-30 (UT-VLK-030) | WantCreateでテクスチャ作成 | E-08 (行704-762) | ○ |
| C-31 (UT-VLK-031) | WantUpdatesでテクスチャ更新 | E-08 (行764-898) | ○ |
| C-32 (UT-VLK-032) | OK状態で早期リターン | E-08 (行698-699) | ○ |
| C-33 (UT-VLK-033) | WantDestroyでテクスチャ破棄 | E-08 (行900-901) | ○ |
| C-34 (UT-VLK-034) | SetMinImageCountでMinImageCount更新 | E-09 | ○ |
| C-35 (UT-VLK-035) | MinImageCount < 2でアサート | E-09 (行1344) | ○ |
| C-36 (UT-VLK-036) | 同じ値で早期リターン | E-09 (行1345-1346) | ○ |
| C-37 (UT-VLK-037) | CreateMainPipelineでパイプライン作成 | E-10 | ○ |
| C-38 (UT-VLK-038) | 既存パイプライン破棄後に新規作成 | E-10 (行1156-1160) | ○ |
| C-39 (UT-VLK-039) | LoadFunctionsで関数ポインタロード | E-11 | △ |
| C-40 (UT-VLK-040) | loader_funcがnull返却でfalse | E-11 (行1243-1245) | △ |
| C-41 (UT-VLK-041) | api_version=0でデフォルト使用 | E-11 (行1238-1239) | ○ |
| C-42 (UT-VLK-042) | CreateDeviceObjectsで全オブジェクト作成 | E-12 | ○ |
| C-43 (UT-VLK-043) | DestroyDeviceObjectsで全オブジェクト破棄 | E-13 | ○ |
| C-44 (UT-VLK-044) | MemoryTypeで適切なインデックス返却 | E-14 | ○ |
| C-45 (UT-VLK-045) | MemoryType検索失敗で0xFFFFFFFF | E-14 (行425) | ○ |
| C-46 (UT-VLK-046) | AlignBufferSizeでアラインメント調整 | E-15 | ○ |
| C-47 (UT-VLK-047) | アラインメント済みサイズでそのまま返却 | E-15 | ○ |
| C-48 (UT-VLK-048) | サイズ0で0返却 | E-15 | ○ |
| C-49 (UT-VLK-049) | CreateOrResizeBufferでバッファ新規作成 | E-16 | ○ |
| C-50 (UT-VLK-050) | CreateOrResizeBufferでバッファリサイズ | E-16 | ○ |
| C-51 (UT-VLK-051) | SetupRenderStateでレンダリング状態設定 | E-17 | ○ |
| C-52 (UT-VLK-052) | プッシュ定数設定 | E-17 (行510-518) | ○ |
| C-53 (UT-VLK-053) | CreateShaderModulesでシェーダー作成 | E-18 | ○ |
| C-54 (UT-VLK-054) | カスタムシェーダー使用 | E-18 (行914, 924) | ○ |
| C-55 (UT-VLK-055) | 既存シェーダーモジュールでスキップ | E-18 (行908, 918) | ○ |
| C-56 (UT-VLK-056) | CreatePipelineでパイプライン作成 | E-19 | ○ |
| C-57 (UT-VLK-057) | Dynamic Rendering時のパイプライン作成 | E-19 (行1035-1043) | ○ |
| C-58 (UT-VLK-058) | MSAAサンプル数適用 | E-19 (行992) | ○ |
| C-59 (UT-VLK-059) | PipelineInfoデフォルト値 | E-38 | ○ |
| C-60 (UT-VLK-060) | InitInfoゼロ初期化 | E-39 | ○ |
| C-61 (UT-VLK-061) | SelectSurfaceFormatで要求フォーマット選択 | E-20 | ○ |
| C-62 (UT-VLK-062) | VK_FORMAT_UNDEFINEDの処理 | E-20 (行1452-1460) | ○ |
| C-63 (UT-VLK-063) | フォーマット不可時フォールバック | E-20 (行1476) | ○ |
| C-64 (UT-VLK-064) | request_formats nullでアサート | E-20 (行1438) | ○ |
| C-65 (UT-VLK-065) | request_formats_count=0でアサート | E-20 (行1439) | ○ |
| C-66 (UT-VLK-066) | SelectPresentModeで要求モード選択 | E-21 | ○ |
| C-67 (UT-VLK-067) | モード不可時VK_PRESENT_MODE_FIFO_KHR | E-21 (行1500) | ○ |
| C-68 (UT-VLK-068) | request_modes nullでアサート | E-21 (行1483) | ○ |
| C-69 (UT-VLK-069) | ディスクリートGPU優先選択 | E-22 (行1518-1524) | ○ |
| C-70 (UT-VLK-070) | ディスクリートGPUなしで最初のGPU | E-22 (行1527-1528) | ○ |
| C-71 (UT-VLK-071) | GPU 0個でアサート | E-22 (行1508) | ○ |
| C-72 (UT-VLK-072) | グラフィックスキューファミリ選択 | E-23 | ○ |
| C-73 (UT-VLK-073) | キューファミリ検索失敗で-1 | E-23 (行1543) | ○ |
| C-74 (UT-VLK-074) | MAILBOXモードで3 | E-24 (行1598-1599) | ○ |
| C-75 (UT-VLK-075) | FIFOモードで2 | E-24 (行1600-1601) | ○ |
| C-76 (UT-VLK-076) | FIFO_RELAXEDモードで2 | E-24 (行1600-1601) | ○ |
| C-77 (UT-VLK-077) | IMMEDIATEモードで1 | E-24 (行1602-1603) | ○ |
| C-78 (UT-VLK-078) | CreateOrResizeWindowでウィンドウ作成 | E-25 | ○ |
| C-79 (UT-VLK-079) | ウィンドウリサイズ | E-25 | ○ |
| C-80 (UT-VLK-080) | Surface nullでアサート | E-25 (行1779) | ○ |
| C-81 (UT-VLK-081) | DestroyWindowでリソース解放 | E-26 | ○ |
| C-82 (UT-VLK-082) | CreateWindowSwapChainでスワップチェーン作成 | E-27 | ○ |
| C-83 (UT-VLK-083) | min_image_count=0でプレゼントモードから計算 | E-27 (行1632-1633) | ○ |
| C-84 (UT-VLK-084) | Dynamic RenderingでRenderPass非作成 | E-27 (行1696-1729) | ○ |
| C-85 (UT-VLK-085) | CreateWindowCommandBuffersでコマンドバッファ作成 | E-28 | ○ |
| C-86 (UT-VLK-086) | セマフォ作成 | E-28 (行1582-1593) | ○ |
| C-87 (UT-VLK-087) | physical_device nullでアサート | E-28 (行1548) | ○ |
| C-88 (UT-VLK-088) | DestroyFrameでフレームリソース解放 | E-29 | ○ |
| C-89 (UT-VLK-089) | DestroyFrameSemaphoresでセマフォ解放 | E-30 | ○ |
| C-90 (UT-VLK-090) | DestroyFrameRenderBuffersでバッファ解放 | E-31 | ○ |
| C-91 (UT-VLK-091) | DestroyWindowRenderBuffersで全バッファ解放 | E-32 | ○ |
| C-92 (UT-VLK-092) | ImGui_ImplVulkanH_Windowデフォルト値 | E-33 (行251-267) | ○ |
| C-93 (UT-VLK-093) | AttachmentDescデフォルト初期化 | E-33 (行259-266) | ○ |
| C-94 (UT-VLK-094) | check_vk_resultでコールバック呼び出し | E-34 (行434-435) | ○ |
| C-95 (UT-VLK-095) | 未初期化で早期リターン | E-34 (行431-432) | ○ |
| C-96 (UT-VLK-096) | GetBackendDataでデータ返却 | E-35 | ○ |
| C-97 (UT-VLK-097) | 未初期化でnullptr返却 | E-35 (行413) | ○ |
| C-98 (UT-VLK-098) | RenderState構造体 | E-36 | ○ |
| C-99 (UT-VLK-099) | DestroyTextureでリソース解放 | E-37 | ○ |
| C-100 (UT-VLK-100) | TexIDがInvalidに設定 | E-37 (行690) | ○ |

## 4) 不足情報（Unknown / Missing）
- **UT-VLK-039/040**: `ImGui_ImplVulkan_LoadFunctions` のテストは `IMGUI_IMPL_VULKAN_NO_PROTOTYPES` または `VK_NO_PROTOTYPES` マクロが定義されている場合のみ有効。マクロ未定義時の動作は異なる可能性がある。
  - 候補：コンパイル時フラグによるテスト分岐 / モックローダー関数の作成

## 5) リスクフラグ（レビュー観点）
- **0 (低リスク)**: 基本的なAPI関数（Init, Shutdown, NewFrame, RenderDrawData）のテストケースは十分な根拠あり
- **0 (低リスク)**: ヘルパー関数（ImGui_ImplVulkanH_XXX）のテストケースは実装コードから直接導出
- **1 (中リスク)**: Dynamic Rendering関連のテスト（VK_VERSION_1_3 / VK_KHR_dynamic_rendering依存）
- **1 (中リスク)**: カスタムローダー関連のテスト（IMGUI_IMPL_VULKAN_NO_PROTOTYPES依存）
- **0 (低リスク)**: 構造体のデフォルト値テストは実装から確認済み

## 6) レビュアーチェックリスト（最小）
- [ ] 初期化パラメータの境界値テスト（MinImageCount, ImageCount）が適切か確認
- [ ] Dynamic Rendering有効時のテストケースがVulkan 1.3+ / KHR拡張環境で実行可能か確認
- [ ] カスタムローダー関連テストがIMGUI_IMPL_VULKAN_NO_PROTOTYPESマクロ有効時のみ実行されるか確認
- [ ] テクスチャ管理（作成/更新/破棄）のライフサイクルテストが完全か確認
- [ ] ヘルパー関数（ImGui_ImplVulkanH_XXX）のエラーハンドリングテストが十分か確認
- [ ] Vulkanオブジェクトの生成/破棄の対称性が保たれているか確認
