色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用DirectX 12在分布式系統上的應用程序之間同步當前調用

星星科技指導員 ? 來源:NVIDIA ? 作者:Nico Marniok ? 2022-10-10 15:06 ? 次閱讀

交換組和交換屏障是分別在同一系統和分布式系統上的不同窗口之間同步緩沖區交換的眾所周知的方法。最初是為 OpenGL 引入的,后來通過公共 NvAPI 接口進行擴展,并在 DirectX 9 到 12 中得到支持。

NVIDIA 現在引入了當前障礙的概念。它們結合了交換組和交換障礙,并提供了一種在系統內和系統之間設置同步當前調用的簡單方法。

當應用程序請求加入當前障礙時,驅動程序會根據當前系統配置嘗試設置交換組或交換組與交換障礙的組合。這些函數再次通過公共 NvAPI 接口提供。

目前的障礙只有在應用程序處于全屏狀態,沒有窗口邊框,也沒有桌面縮放或任務欄組合時才有效。如果這些要求中至少有一項未得到滿足,則當前的安全柵將斷開并恢復到掛起狀態,直到所有要求都得到滿足。當當前屏障處于掛起狀態時,顯示器之間不會發生同步。

類似地,只有當顯示器連接到相同的 GPU 并設置為相同的定時時,當前屏障才能正常工作。顯示器也可以與 Quadro Sync 卡或 NVLink 連接器同步。

顯示同步通過以下兩種方式之一進行:

顯示器已配置為使用 Quadro sync 插件板形成同步組或同步到外部同步源,或兩者兼而有之。

通過創建跨越顯示器的馬賽克顯示表面,實現了顯示器的同步。

當通過其中一種方法同步顯示定時時,則可以使用 DX12 顯示屏障。

NvAPI 接口

要通過 NvAPI 中的 present barrier 擴展設置同步 present 調用,應用程序必須確保完全支持 present barrier 。如果是這種情況,它必須創建一個當前 barrier 客戶端,注冊所需的 DirectX 資源,并加入當前 barrier 。

查詢當前屏障支持

在嘗試同步當前調用之前,應用程序應首先檢查當前操作系統、驅動程序和硬件配置是否支持當前屏障同步。這是通過使用所需的 D3D12 設備作為參數調用相應的函數來實現的。

ID3D12Device* device;
... // initialize the device
bool supported;
assert(NvAPI_D3D12_QueryPresentBarrierSupport(device, &supported) == NVAPI_OK);
if(supported) { LOG("D3D12 present barrier is supported on this system."); ...
}

創建當前屏障客戶端句柄

如果系統提供當前屏障支持,應用程序可以通過提供 D3D12 設備和 DXGI 交換鏈來創建當前屏障客戶端。句柄用于注冊所需的資源、加入或離開當前障礙以及查詢幀統計信息

IDXGISwapChain swapChain;
... // initialize the swap chain
NvPresentBarrierClientHandle pbClientHandle = nullptr;
assert(NvAPI_D3D12_CreatePresentBarrierClient(device, swapChain, &pbClientHandle) == NVAPI_OK);

注冊現有障礙資源

創建客戶端后,當前障礙需要訪問交換鏈的緩沖區資源和圍欄對象,以實現適當的幀同步。圍欄值由每幀的當前屏障增加,應用程序不得更改。然而,應用程序可以使用它來同步主機和設備之間的命令分配器使用。每當交換鏈的緩沖區發生變化時,必須再次調用該函數。

ID3D12Fence pbFence; // the app may wait on the fence but must not signal it
assert(SUCCEEDED(device->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&pbFence))));
ID3D12Resource** backBuffers;
unsigned int backBufferCount;
... // query buffers from swap chain
assert(NvAPI_D3D12_RegisterPresentBarrierResources(pbClientHandle, pbFence, backBuffers, backBufferCount) == NVAPI_OK);

加入當前的障礙

創建當前屏障客戶端句柄并注冊掃描資源后,應用程序可以加入當前屏障同步。然后,未來 – 現在的呼叫與其他客戶端同步。

NV_JOIN_PRESENT_BARRIER_PARAMS params = {};
params.dwVersion = NV_JOIN_PRESENT_BARRIER_PARAMS_VER1;
assert(NvAPI_JoinPresentBarrier(pbClientHandle, ¶ms) == NVAPI_OK);

離開目前的障礙

存在一個類似的函數來保持當前的勢壘同步。客戶端保持不變,這樣應用程序就可以輕松地再次加入。

assert(NvAPI_LeavePresentBarrier(pbClientHandle));

應用程序的主循環

當一切都設置好后,應用程序可以執行其主循環,而無需任何更改,包括當前調用。目前的障礙自行處理同步。雖然應用程序可以選擇使用提供給當前屏障的圍欄進行主機和設備同步,但也可以使用自己的專用圍欄。

查詢統計信息

當客戶端注冊到當前屏障時,應用程序可以隨時查詢幀和同步統計信息,以確保一切按預期工作。

NV_PRESENT_BARRIER_FRAME_STATISTICS stats = {};
stats.dwVersion = NV_PRESENT_BARRIER_FRAME_STATICS_VER1;
assert(NvAPI_QueryPresentBarrierFrameStatistics(pbClientHandle, &stats) == NVAPI_OK);

由函數調用填充的當前障礙統計對象提供了幾個有用的值。

SyncMode:上次當前調用中客戶端的當前障礙模式。可能值:

PRESENT_BARRIER_NOT_JOINED:客戶尚未加入當前的障礙。

PRESENT_BARRIER_SYNC_CLIENT:客戶端加入了當前障礙,但未與任何其他客戶端同步。

PRESENT_BARRIER_SYNC_SYSTEM:客戶端加入了當前屏障,并與系統內的其他客戶端同步。

PRESENT_BARRIER_SYNC_CLUSTER:客戶端加入了當前的障礙,并與系統內和跨系統的其他客戶端同步。

PresentCount:幀成功加入當前障礙后從客戶端顯示的總次數。

PresentInSyncCount:自返回SyncMode以來,從客戶端顯示幀的總次數是PRESENT_BARRIER_SYNC_SYSTEM或PRESENT_BARRIER_SYNC_CLUSTER。如果SyncMode偏離這些值,它將重置為 0 。

FlipInSyncCount:自返回SyncMode以來,客戶端的翻轉總數為PRESENT_BARRIER_SYNC_SYSTEM或PRESENT_BARRIER_SYNC_CLUSTER。如果SyncMode偏離這些值,它將重置為 0 。

RefreshCount:自客戶端返回SyncMode以來的 v 空格總數為PRESENT_BARRIER_SYNC_SYSTEM或PRESENT_BARRIER_SYNC_CLUSTER。如果SyncMode偏離這些值,它將重置為 0 。

示例應用程序

NVIDIA DesignWorks Samples GitHub repo 中提供了一個專用的示例應用程序。它具有可調整和移動的彩色條和列模式,以直觀地檢查同步質量(圖 1 )。該應用程序還支持多 GPU 設置上的交替幀渲染和立體渲染。在運行期間,它可以加入或離開當前的障礙同步。

圖 1.具有移動條線和實時統計信息的示例應用程序。

結論

Present barrier 同步是一種簡單、高級的方法,可以在單個系統和多個分布式系統場景中在多個顯示器上實現同步 Present 調用。該界面完全包含在 NvAPI 庫中,僅包含六個設置函數,而復雜的管理概念對面向用戶的代碼隱藏。

關于作者

Nico Marniok 是 NVIDIA 專業可視化部門的高級開發技術工程師,他與獨立軟件供應商合作,利用計算機圖形軟件和硬件的最新技術。他專攻光線追蹤算法。 ISV 應用范圍從專業圖形設計到數字孿生可視化和模擬。在加入 NVIDIA 之前,Nico 畢業于奧斯納布呂克大學并獲得碩士學位,并在 3D 重建領域進行了研究,首先是計算機層析成像,后來是深度相機。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 顯示器
    +關注

    關注

    21

    文章

    4989

    瀏覽量

    140135
  • NVIDIA
    +關注

    關注

    14

    文章

    5024

    瀏覽量

    103264
收藏 人收藏

    評論

    相關推薦

    分布式軟件系統

    分布式軟件系統分布式軟件系統(Distributed Software Systems)是支持分布式處理的軟件系統,是
    發表于 07-22 14:53

    基于分布式調用鏈監控技術的全息排查功能

    庫存情況等,也就是說根據交易ID可以調用查看交易、商品庫存以及支付等信息,大大提升錯誤排查速度。相關排查如下圖所示。用于全鏈路APM監控的阿里云業務實時監控服務 (ARMS) , 推出的基于
    發表于 08-07 17:02

    利用NI VeriStand 2010特性創建分布式系統

    NI VeriStand網關地址為遠程主機即可。其他應用程序保持不變。  分布式計算機之間共享數據  要讓分布式
    發表于 04-08 09:42

    分布式數據采集系統同步的方法

    本文介紹了基于SAR ADC的系統和基于sigma-delta (∑-Δ) ADC的分布式數據采集系統同步的傳統方法,且探討了這兩種架構之間
    發表于 11-23 10:33

    基于SAR ADC和sigma-delta ADC的分布式數據采集系統同步的傳統方法

    本文介紹了基于SAR ADC的系統和基于sigma-delta (∑-Δ) ADC的分布式數據采集系統同步的傳統方法,且探討了這兩種架構之間
    發表于 01-11 06:44

    HarmonyOS教程—基于分布式數據接口,實現多種設備一致的數據訪問體驗

    1. 如何使用分布式數據庫介紹分布式數據服務(Distributed Data Service,DDS) 為應用程序提供不同設備間數據庫數據分布式的能力。通過
    發表于 09-26 11:40

    HarmonyOS分布式應用框架深入解讀

    各設備能力,從而實現多設備間多端協同、跨端遷移,為萬物互聯奠定基礎。針對HarmonyOS的分布式應用框架后面章節將分別深入解讀。一、HarmonyOS用戶程序 HarmonyOS系統
    發表于 11-22 15:15

    【學習打卡】OpenHarmony的分布式數據管理介紹

    中,精心設計的架構為數據庫和其他數據平臺提供了一個模型,該模型上將部署特定技術以適應各個應用程序分布式數據管理作為OpenHarmony系統的模塊之一,它建立
    發表于 07-15 15:49

    【學習打卡】OpenHarmony的分布式任務調度

    同步、注冊、調用)機制。分布式任務調度程序是能夠跨多個服務器啟動調度作業或工作負載的軟件解決方案,整個過程是不需要人來值守的。舉個例子,我們可以
    發表于 07-18 17:06

    分布式系統硬件資源池原理和接入實踐

    把各個設備的硬件外設抽象為外設信息單元,外設信息各個可信設備之間自動同步,如此,實現了外設信息的全局可見;結合分布式硬件虛擬化技術,實現任意設備
    發表于 12-06 10:02

    ASP.NET分布式數據應用程序高級編程

    ASP.NET分布式數據應用程序高級編程主要介紹如何使用ASP.NET創建Internet和Intranet中的分布式應用程序,書中提供了各種使用數據驅動Web
    發表于 09-26 23:15 ?0次下載
    ASP.NET<b class='flag-5'>分布式</b>數據<b class='flag-5'>應用程序</b>高級編程

    分布式的Erlang程序:陷阱和對策

    為了Erlang運行時系統基礎開發更可靠的分布式系統和算法,我們研究了Erlang編程語言中分布式
    發表于 04-18 22:37 ?23次下載

    分布式調度子系統--初步研究

    、注冊、調用)機制,支持對跨設備的應用進行遠程啟動、遠程調用、遠程連接以及遷移等操作,能夠根據不同設備的能力、位置、業務運行狀態、資源使用情況,以及用戶的習慣和意圖,選擇合適的設備運行分布式任務。 下圖是
    發表于 10-24 12:12 ?1892次閱讀
    <b class='flag-5'>分布式</b>調度子<b class='flag-5'>系統</b>--初步研究

    使用NVIDIA SDK 11.1對DirectX 12進行編碼

    DirectX 12 是 Microsoft 提供的一種低級編程 API ,與以前的版本相比,它減少了驅動程序開銷。 DirectX 12
    的頭像 發表于 04-20 16:27 ?1658次閱讀

    鴻蒙開發接口數據管理:【@ohos.data.distributedData (分布式數據管理)】

    分布式數據管理為應用程序提供不同設備間數據庫的分布式協同能力。通過調用分布式數據各個接口,應用程序
    的頭像 發表于 06-07 09:30 ?1023次閱讀
    鴻蒙開發接口數據管理:【@ohos.data.distributedData (<b class='flag-5'>分布式</b>數據管理)】
    主站蜘蛛池模板: 乱子伦在线观看中文字幕| 2021精品乱码多人收藏| 97人妻无码AV碰碰视频| 麻豆久久国产亚洲精品超碰热| 在线看片成人免费视频| 免费人妻无码AV不卡在线| china chinese中国人玩| 日韩a视频在线观看| 国产精品永久免费视频| 亚洲一区免费香蕉在线| 内射气质御姐视频在线播放| 高清国产激情视频在线观看| 亚洲日韩天堂在线中文字幕| 男男免费看| 国产精品系列在线一区| 中国jjzz| 天天射天天爱天天干| 久草在线草a免费线看| 99热精品在线视频观看| 亚洲 综合 自拍 精品 在线| 乱奷XXXXXHD| 国产精品久久久久久久久久影院| 伊人大香人妻在线播放| 日本人添下面的全过程| 精品国产乱码久久久久久免费 | 日韩综合网| 久久国产高清视频| 别停好爽好深好大好舒服视频| 亚洲精品视频免费| 日本aa大片| 久久99亚洲热最新地址获取| 边摸边吃奶边做下面视频| 亚洲综合国产精品| 软糯白嫩双性受h| 看了n遍舍不得删的黄文| 国产成人免费网站在线观看| 中文字幕在线免费观看视频| 受被三个攻各种道具PLAY| 免费国产精品视频| 精品国产自在现线拍国语| 大胆国模一区二区三区伊人|