最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

(七) vulkan2 - Validation layers

2023-04-15 14:44 作者:FineClassFuture  | 我要投稿

準(zhǔn)備

????前面三角形運(yùn)行成功了,開始解除SDK系統(tǒng)安裝

????sudo apt autoremove vulkan-sdk libvulkan-tools

設(shè)定工作目錄/opt/vulkan

????下載vulkansdk-linux-x86_64-1.3.243.0.tar.gz解壓

????運(yùn)行vkcude測(cè)試

????????export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/vulkan/1.3.243.0/x86_64/lib/

????????./1.3.243.0/x86_64/bin/vkcube

????? ? 如果已經(jīng)安裝了使用vulkan的microsoft-edge-stable或obs-studio或vlc,則系統(tǒng)中已經(jīng)有l(wèi)ibvulkan.so.1,需要注意和下載的SDK的版本是否一致

whereis libvulkan.so.1

libvulkan.so.1: /usr/lib/x86_64-linux-gnu/libvulkan.so.1

ls -l /usr/lib/x86_64-linux-gnu/libvulkan.so.1

/usr/lib/x86_64-linux-gnu/libvulkan.so.1 -> libvulkan.so.1.3.243

我這里和SDK一致


概念

????直接使用網(wǎng)頁(yè)翻譯成中文查看,看看和自己的理解是否一致

Common operations in validation layers are:

  • Checking the values of parameters against the specification to detect misuse

    根據(jù)規(guī)范檢查參數(shù)值以檢測(cè)誤用

  • Tracking creation and destruction of objects to find resource leaks

    跟蹤對(duì)象的創(chuàng)建和銷毀以查找資源泄漏

  • Checking thread safety by tracking the threads that calls originate from

    通過(guò)跟蹤調(diào)用源自的線程來(lái)檢查線程安全性

  • Logging every call and its parameters to the standard output

    將每個(gè)調(diào)用及其參數(shù)記錄到標(biāo)準(zhǔn)輸出中

  • Tracing Vulkan calls for profiling and replaying

    追蹤 Vulkan 需要分析和重放

下面是診斷中函數(shù)實(shí)現(xiàn)的示例 驗(yàn)證層可能如下所示:

VkResult vkCreateInstance(const VkInstanceCreateInfo* pCreateInfo,?const VkAllocationCallbacks* pAllocator,?

?VkInstance* instance)

{? ? ? ??

? ? ? ? if (pCreateInfo == nullptr || instance == nullptr) {

? ? ? ? ? ? log("Null pointer passed to required parameter!");

? ? ? ? ? ? return VK_ERROR_INITIALIZATION_FAILED;

? ? ? ? }

? ? ? ? return real_vkCreateInstance(pCreateInfo, pAllocator, instance);

}

前面的認(rèn)識(shí):

? ? 這樣就很清楚“validation layers”是什么東西了 (翻譯為“驗(yàn)證層”也能理解)

? ? 其實(shí)就是一種debug和release模式(極端且更接近的是assert斷言)

(所以不用正確翻譯,就直接說(shuō)是 “使能調(diào)試檢查”)

? ? 在編寫代碼時(shí)使用debug模式,盡可能地“打印”/檢查出潛在的錯(cuò)誤;發(fā)布時(shí)release模式,去掉多余的調(diào)用/封裝/檢查來(lái)提高“性能”?

沒(méi)有問(wèn)題,后面還有補(bǔ)充內(nèi)容。

????這些驗(yàn)證層可以自由堆疊以包含所有您感興趣的調(diào)試功能。對(duì)于調(diào)試版本,您只需啟用驗(yàn)證層即可,并為發(fā)布版本完全禁用它們,這為您提供了兩全其美!

????Vulkan沒(méi)有內(nèi)置任何驗(yàn)證層,但LunarG Vulkan SDK 提供了一組很好的層來(lái)檢查常見(jiàn)錯(cuò)誤。他們也是完全開源,因此,您可以檢查錯(cuò)誤。使用驗(yàn)證層是避免應(yīng)用程序中斷的最佳方法。

????驗(yàn)證層只有在系統(tǒng)上安裝后才能使用。 例如,LunarG 驗(yàn)證層僅在具有已安裝 Vulkan SDK中。

????Vulkan 中以前有兩種不同類型的驗(yàn)證層: 實(shí)例 和特定于設(shè)備。這個(gè)想法是實(shí)例層只會(huì)檢查 與全局 Vulkan 對(duì)象(如實(shí)例)和設(shè)備特定層相關(guān)的調(diào)用 、只會(huì)檢查與特定 GPU 相關(guān)的調(diào)用。設(shè)備特定層現(xiàn)已棄用,這意味著實(shí)例驗(yàn)證層適用于所有Vulkan調(diào)用。規(guī)范文檔仍建議您啟用驗(yàn)證設(shè)備級(jí)別的層以及兼容性,這是某些人所要求的實(shí)現(xiàn)。我們將簡(jiǎn)單地在邏輯上指定與實(shí)例相同的層設(shè)備級(jí)別,我們將在后面看到。

????和理解的是差不多一個(gè)意思。

????繼續(xù)看。

所有有用的標(biāo)準(zhǔn)驗(yàn)證都捆綁到 SDK 中包含的層中,該層稱為 VK_LAYER_KHRONOS_validation


下一個(gè)內(nèi)容,前面刪除掉的


vkCreateDebugUtilsMessengerEXT

vkDestroyDebugUtilsMessengerEXT

這兩個(gè)有啥用?

為什么在創(chuàng)建instance時(shí)設(shè)置了callback還要調(diào)用vkCreateDebugUtilsMessengerEXT再設(shè)置一遍?


動(dòng)手

????先說(shuō)Instance,前面的理解

? ? Instance百度翻譯:例子; 事例; 實(shí)例;

? ? 我喜歡取第一個(gè)概念,轉(zhuǎn)述為創(chuàng)建一個(gè)“例子”(應(yīng)用)并告知要求和用途

????現(xiàn)在,用windows窗口中概念來(lái)說(shuō),vulkan instance就是“窗口”(VULKAN API)的handle; 用linux中概念來(lái)說(shuō),一個(gè)vulkan instance就是VULKAN API的descriptor (linux下有 file descriptor簡(jiǎn)稱fd);

????創(chuàng)建一個(gè)窗口,拿到handle; 創(chuàng)建/打開一個(gè)文件,拿到fd。

????使用vulkan api,拿到instance。

??(vkDestroyInstance 釋放資源,才會(huì)去檢查

????創(chuàng)建surface,不釋放,然后

1.?添加教程中的CreateDebugUtilsMessengerEXT、DestroyDebugUtilsMessengerEXT

2.?不添加CreateDebugUtilsMessengerEXT、DestroyDebugUtilsMessengerEXT

沒(méi)有任何區(qū)別


????還得看spec,https://registry.khronos.org/vulkan/specs/1.3-extensions/pdf/vkspec.pdf

????callback傳遞給vkCreateInstance(),只會(huì)在vkCreateInstance和vkDestroyInstance執(zhí)行時(shí)才有回調(diào)對(duì)應(yīng)的callback。其他時(shí)候需要使用vkCreateDebugReportCallbackEXT或者vkCreateDebugUtilsMessengerEXT來(lái)使能回調(diào)對(duì)應(yīng)的callback。


? ? 這樣就清楚了為什么上面測(cè)試都一樣。


完整的工程

vulkan.pro


main.cpp


mainwindow.h


mainwindow.cpp




????

(七) vulkan2 - Validation layers的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
榆林市| 九江县| 岳阳市| 子长县| 普陀区| 清流县| 柞水县| 萝北县| 彝良县| 博兴县| 宿松县| 延安市| 呼图壁县| 托克逊县| 绥化市| 宁武县| 晋江市| 石楼县| 南开区| 合江县| 兴海县| 永嘉县| 常熟市| 盐山县| 成安县| 丰台区| 拉萨市| 吉林省| 右玉县| 九龙坡区| 古田县| 湖南省| 南陵县| 武山县| 荥阳市| 三河市| 安义县| 余江县| 棋牌| 屏边| 陆丰市|