Virgl asnychronous command stream submission

Virgl testsing of performance improvement

HTML result view exported from: https://openbenchmarking.org/result/2204226-NE-2203300NE31&sor.

Virgl asnychronous command stream submissionProcessorMotherboardChipsetMemoryDiskGraphicsAudioMonitorNetworkOSKernelDisplay ServerOpenGLCompilerFile-SystemScreen ResolutionSystem LayerBaselineAsnychronous command emission and early flushAsync transfer fixedAsync transfer query fixed tooAsync transfer query fixed too againAsync transfer fixed staging tooAsync transfer fixed staging too disable dpmsAsync transfer fixed staging too -dpmsAsync transfer + write-only fencesAsync transfer + write-only fences 2Async transfer + write-only fences -reallyAsync transfer + write-only fences fixedAsync transfer + write-only fences fixed 2Baseline-redoBaseline-after-update-2022-04-22Baseline-after-update-2022-04-22-second-go8 x QEMU Virtual 2.5+ (8 Cores)QEMU Standard PC (Q35 + ICH9 2009) (rel-1.14.0-0-g155821a1990b-prebuilt.qemu.org BIOS)Intel 82G33/G31/P35/P31 + ICH932GB97GBvirgl 12288GBIntel 82801IQEMU MonitorRed Hat Virtio deviceGentoo/Linux5.15.11-gentoo-x86_64 (x86_64)X Server 1.20.144.3 Mesa 22.0.0-devel (git-a167e8ecc8) (LLVM 13.0.0 D...)GCC 11.2.0 + LLVM 13.0.0ext41440x900QEMU4.3 Mesa 22.0.0-devel (git-55482b8164) (LLVM 13.0.0 D...)4.3 Mesa 22.0.0-devel (git-47fee50e3e) (LLVM 13.0.0 D...)1024x7684.3 Mesa 22.0.0-devel (git-692c5348f2) (LLVM 13.0.0 D...)4.3 Mesa 22.0.0-devel (git-b8ec3a5274) (LLVM 13.0.0 D...)X Server 1.21.1.34.3 Mesa 21.3.5 (LLVM 13.0.1 D...)4.3 Mesa 22.1.0-devel (git-78629f6d70) (LLVM 13.0.1 D...)4.3 Mesa 22.1.0-devel (git-f54afaa617) (LLVM 13.0.1 D...)4.3 Mesa 22.1.0-devel (git-007cb02db9) (LLVM 13.0.1 D...)Intel Core i7-1165G7 (8 Cores)ChromiumOS crosvmIntel 440FX 82441FX PMC16GB800GBvirgl Intel Xe TGL GT2Arch rolling5.15.16-01331-gb6c5afc81904 (x86_64)4.5 Mesa 22.2.0-devel (git-ca40bad84a)GCC 11.2.0 + LLVM 13.0.1btrfs1920x1080dockerOpenBenchmarking.orgProcessor Details- Baseline: CPU Microcode: 0x1000065- Asnychronous command emission and early flush: CPU Microcode: 0x1000065- Async transfer fixed: CPU Microcode: 0x1000065- Async transfer query fixed too: CPU Microcode: 0x1000065- Async transfer query fixed too again: CPU Microcode: 0x1000065- Async transfer fixed staging too: CPU Microcode: 0x1000065- Async transfer fixed staging too disable dpms: CPU Microcode: 0x1000065- Async transfer fixed staging too -dpms: CPU Microcode: 0x1000065- Async transfer + write-only fences: CPU Microcode: 0x1000065- Async transfer + write-only fences 2: CPU Microcode: 0x1000065- Async transfer + write-only fences -really: CPU Microcode: 0x1000065- Async transfer + write-only fences fixed: CPU Microcode: 0x1000065- Async transfer + write-only fences fixed 2: CPU Microcode: 0x1000065- Baseline-redo: CPU Microcode: 0x1000065- Baseline-after-update-2022-04-22: CPU Microcode: 0x1- Baseline-after-update-2022-04-22-second-go: CPU Microcode: 0x1Python Details- Baseline: Python 3.9.9- Asnychronous command emission and early flush: Python 3.9.9- Async transfer fixed: Python 3.9.9- Async transfer query fixed too: Python 3.9.9- Async transfer query fixed too again: Python 3.9.9- Async transfer fixed staging too: Python 3.9.9- Async transfer fixed staging too disable dpms: Python 3.9.9- Async transfer fixed staging too -dpms: Python 3.9.9- Async transfer + write-only fences: Python 3.9.9- Async transfer + write-only fences 2: Python 3.9.9- Async transfer + write-only fences -really: Python 3.9.9- Async transfer + write-only fences fixed: Python 3.9.9- Async transfer + write-only fences fixed 2: Python 3.9.9- Baseline-redo: Python 3.9.9- Baseline-after-update-2022-04-22: Python 3.10.4- Baseline-after-update-2022-04-22-second-go: Python 3.10.4Security Details- Baseline: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Asnychronous command emission and early flush: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Async transfer fixed: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Async transfer query fixed too: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Async transfer query fixed too again: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Async transfer fixed staging too: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Async transfer fixed staging too disable dpms: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Async transfer fixed staging too -dpms: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Async transfer + write-only fences: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Async transfer + write-only fences 2: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Async transfer + write-only fences -really: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Async transfer + write-only fences fixed: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Async transfer + write-only fences fixed 2: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Baseline-redo: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Not affected + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Full AMD retpoline STIBP: disabled RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Baseline-after-update-2022-04-22: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Mitigation of SSB disabled via prctl and seccomp + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Enhanced IBRS IBPB: conditional RSB filling + srbds: Not affected + tsx_async_abort: Not affected- Baseline-after-update-2022-04-22-second-go: itlb_multihit: Not affected + l1tf: Not affected + mds: Not affected + meltdown: Not affected + spec_store_bypass: Mitigation of SSB disabled via prctl and seccomp + spectre_v1: Mitigation of usercopy/swapgs barriers and __user pointer sanitization + spectre_v2: Mitigation of Enhanced IBRS IBPB: conditional RSB filling + srbds: Not affected + tsx_async_abort: Not affectedKernel Details- Baseline-after-update-2022-04-22, Baseline-after-update-2022-04-22-second-go: Transparent Huge Pages: madviseEnvironment Details- Baseline-after-update-2022-04-22, Baseline-after-update-2022-04-22-second-go: MESA_REPO=git@gitlab.freedesktop.org:gerddie/mesa.git MESA_BRANCH=async-submit-only MESA_SOURCE_PREFIX=/home/chronos/mesa

Virgl asnychronous command stream submissionopenarena: 1600 x 900unigine-heaven: 1600 x 900 - Fullscreen - OpenGLunigine-sanctuary: 1600 x 900 - Fullscreenunigine-tropics: 1600 x 900 - Fullscreenunigine-valley: 1600 x 900 - Fullscreen - OpenGLxonotic: 1024 x 768 - Ultimateglmark2: 1024 x 768gputest: 1600 x 900BaselineAsnychronous command emission and early flushAsync transfer fixedAsync transfer query fixed tooAsync transfer query fixed too againAsync transfer fixed staging tooAsync transfer fixed staging too disable dpmsAsync transfer fixed staging too -dpmsAsync transfer + write-only fencesAsync transfer + write-only fences 2Async transfer + write-only fences -reallyAsync transfer + write-only fences fixedAsync transfer + write-only fences fixed 2Baseline-redoBaseline-after-update-2022-04-22Baseline-after-update-2022-04-22-second-go301.1162.689213.194168.360160.499250.4787894467213369412.6163.886357.740232.878159.183268.3132810464014741365.5165.368397.093235.961161.147271.1263553461314618392.5163.478408.487233.080159.120270.1677618451714859399.9164.351510.694254.427159.482271.2741134448014741358.0157.481374.1164.467347.941243.035163.096272.2699109451614816284.0163.535231.852355.6160.076424.551243.902341.6158.384455.496237.928153.979265.3944857450314723284.5167.388251.471179.654156.760243.3085348440913095120.919.7210123.419.912047.769320.279660.53861064111041OpenBenchmarking.org

OpenArena

Resolution: 1600 x 900

OpenBenchmarking.orgFrames Per Second, More Is BetterOpenArena 0.8.8Resolution: 1600 x 900Asnychronous command emission and early flushAsync transfer query fixed too againAsync transfer query fixed tooAsync transfer fixed staging too -dpmsAsync transfer fixedAsync transfer fixed staging tooAsync transfer + write-only fences fixedAsync transfer + write-only fences fixed 2BaselineBaseline-redoAsync transfer + write-only fences 2Baseline-after-update-2022-04-22-second-goBaseline-after-update-2022-04-2290180270360450SE +/- 3.32, N = 3SE +/- 2.90, N = 3SE +/- 5.07, N = 3SE +/- 1.40, N = 3SE +/- 0.82, N = 3SE +/- 4.39, N = 4SE +/- 1.80, N = 3SE +/- 2.13, N = 15SE +/- 1.00, N = 3SE +/- 2.73, N = 3SE +/- 3.07, N = 3SE +/- 8.37, N = 12SE +/- 7.02, N = 15412.6399.9392.5374.1365.5358.0355.6341.6301.1284.5284.0123.4120.9MIN: 1MIN: 1MIN: 1MIN: 1MIN: 1MIN: 1MIN: 1MIN: 1MIN: 1MIN: 2MIN: 2

OpenArena

Resolution: 1600 x 900 - Total Frame Time

OpenBenchmarking.orgMilliseconds, Fewer Is BetterOpenArena 0.8.8Resolution: 1600 x 900 - Total Frame TimeAsnychronous command emission and early flushAsync transfer query fixed too againAsync transfer query fixed tooAsync transfer fixed staging too -dpmsAsync transfer fixedAsync transfer + write-only fences fixedAsync transfer fixed staging tooAsync transfer + write-only fences fixed 2BaselineAsync transfer + write-only fences 2Baseline-redoBaseline-after-update-2022-04-22Baseline-after-update-2022-04-22-second-go1020304050Min: 1 / Avg: 2.44 / Max: 12Min: 1 / Avg: 2.52 / Max: 12Min: 1 / Avg: 2.55 / Max: 9Min: 1 / Avg: 2.68 / Max: 12Min: 1 / Avg: 2.74 / Max: 12Min: 1 / Avg: 2.77 / Max: 11Min: 1 / Avg: 2.8 / Max: 17Min: 1 / Avg: 2.92 / Max: 11Min: 1 / Avg: 3.35 / Max: 12Min: 1 / Avg: 3.57 / Max: 12Min: 1 / Avg: 3.57 / Max: 12Min: 2 / Avg: 7.01 / Max: 41Min: 2 / Avg: 7.38 / Max: 47

Unigine Heaven

Resolution: 1600 x 900 - Mode: Fullscreen - Renderer: OpenGL

OpenBenchmarking.orgFrames Per Second, More Is BetterUnigine Heaven 4.0Resolution: 1600 x 900 - Mode: Fullscreen - Renderer: OpenGLBaseline-redoAsync transfer fixedAsync transfer fixed staging too -dpmsAsync transfer query fixed too againAsnychronous command emission and early flushAsync transfer + write-only fences 2Async transfer query fixed tooBaselineAsync transfer + write-only fences fixedAsync transfer + write-only fences fixed 2Async transfer fixed staging tooBaseline-after-update-2022-04-22-second-goBaseline-after-update-2022-04-224080120160200SE +/- 0.45, N = 3SE +/- 0.16, N = 3SE +/- 0.24, N = 3SE +/- 0.05, N = 3SE +/- 0.15, N = 3SE +/- 0.86, N = 3SE +/- 0.29, N = 3SE +/- 0.59, N = 3SE +/- 0.49, N = 3SE +/- 0.05, N = 3SE +/- 1.64, N = 9SE +/- 0.21, N = 5SE +/- 0.22, N = 9167.39165.37164.47164.35163.89163.54163.48162.69160.08158.38157.4819.9119.72

Unigine Sanctuary

Resolution: 1600 x 900 - Mode: Fullscreen

OpenBenchmarking.orgFrames Per Second, More Is BetterUnigine Sanctuary 2.3Resolution: 1600 x 900 - Mode: FullscreenAsync transfer query fixed too againAsync transfer + write-only fences fixed 2Async transfer + write-only fences fixedAsync transfer query fixed tooAsync transfer fixedAsnychronous command emission and early flushAsync transfer fixed staging too -dpmsBaseline-redoAsync transfer + write-only fences 2Baseline110220330440550SE +/- 2.10, N = 3SE +/- 4.69, N = 3SE +/- 16.15, N = 12SE +/- 31.26, N = 12SE +/- 33.13, N = 12SE +/- 26.47, N = 9SE +/- 29.18, N = 12SE +/- 23.07, N = 12SE +/- 20.99, N = 12SE +/- 21.79, N = 9510.69455.50424.55408.49397.09357.74347.94251.47231.85213.19

Unigine Tropics

Resolution: 1600 x 900 - Mode: Fullscreen

OpenBenchmarking.orgFrames Per Second, More Is BetterUnigine Tropics 1.3Resolution: 1600 x 900 - Mode: FullscreenAsync transfer query fixed too againAsync transfer + write-only fences fixedAsync transfer fixed staging too -dpmsAsync transfer + write-only fences fixed 2Async transfer fixedAsync transfer query fixed tooAsnychronous command emission and early flushBaseline-redoBaselineBaseline-after-update-2022-04-22-second-go60120180240300SE +/- 3.45, N = 3SE +/- 4.11, N = 12SE +/- 5.09, N = 12SE +/- 4.69, N = 12SE +/- 5.08, N = 12SE +/- 5.55, N = 11SE +/- 8.02, N = 9SE +/- 0.97, N = 3SE +/- 5.19, N = 10SE +/- 0.50, N = 12254.43243.90243.04237.93235.96233.08232.88179.65168.3647.77

Unigine Valley

Resolution: 1600 x 900 - Mode: Fullscreen - Renderer: OpenGL

OpenBenchmarking.orgFrames Per Second, More Is BetterUnigine Valley 1.0Resolution: 1600 x 900 - Mode: Fullscreen - Renderer: OpenGLAsync transfer fixed staging too -dpmsAsync transfer fixedBaselineAsync transfer query fixed too againAsnychronous command emission and early flushAsync transfer query fixed tooBaseline-redoAsync transfer + write-only fences fixed 2Baseline-after-update-2022-04-22-second-go4080120160200SE +/- 0.59, N = 3SE +/- 0.46, N = 3SE +/- 0.36, N = 3SE +/- 0.54, N = 3SE +/- 1.51, N = 3SE +/- 0.75, N = 3SE +/- 0.85, N = 3SE +/- 0.78, N = 3SE +/- 0.22, N = 12163.10161.15160.50159.48159.18159.12156.76153.9820.28

Xonotic

Resolution: 1024 x 768 - Effects Quality: Ultimate

OpenBenchmarking.orgFrames Per Second, More Is BetterXonotic 0.8.2Resolution: 1024 x 768 - Effects Quality: UltimateAsync transfer fixed staging too -dpmsAsync transfer query fixed too againAsync transfer fixedAsync transfer query fixed tooAsnychronous command emission and early flushAsync transfer + write-only fences fixed 2BaselineBaseline-redoBaseline-after-update-2022-04-22-second-go60120180240300SE +/- 1.66, N = 3SE +/- 1.63, N = 3SE +/- 0.31, N = 3SE +/- 1.16, N = 3SE +/- 0.46, N = 3SE +/- 2.36, N = 3SE +/- 0.53, N = 3SE +/- 0.65, N = 3SE +/- 0.74, N = 4272.27271.27271.13270.17268.31265.39250.48243.3160.54MIN: 40 / MAX: 729MIN: 39 / MAX: 715MIN: 42 / MAX: 724MIN: 38 / MAX: 751MIN: 39 / MAX: 703MIN: 42 / MAX: 687MIN: 40 / MAX: 669MIN: 40 / MAX: 651MIN: 20 / MAX: 102

GLmark2

Resolution: 1024 x 768

OpenBenchmarking.orgScore, More Is BetterGLmark2 2021.08.30Resolution: 1024 x 768BaselineAsnychronous command emission and early flushAsync transfer fixedAsync transfer query fixed tooAsync transfer fixed staging too -dpmsAsync transfer + write-only fences fixed 2Async transfer query fixed too againBaseline-redoBaseline-after-update-2022-04-22-second-go1000200030004000500046724640461345174516450344804409411

GpuTest

Resolution: 1600 x 900

OpenBenchmarking.orgPoints, More Is BetterGpuTest 0.7.0Resolution: 1600 x 900Async transfer query fixed tooAsync transfer fixed staging too -dpmsAsync transfer query fixed too againAsnychronous command emission and early flushAsync transfer + write-only fences fixed 2Async transfer fixedBaselineBaseline-redoBaseline-after-update-2022-04-22-second-go3K6K9K12K15KSE +/- 4.51, N = 3SE +/- 36.56, N = 3SE +/- 38.84, N = 3SE +/- 52.23, N = 3SE +/- 24.29, N = 3SE +/- 77.42, N = 3SE +/- 107.53, N = 3SE +/- 102.52, N = 15SE +/- 9.82, N = 1514859148161474114741147231461813369130951041


Phoronix Test Suite v10.8.4