Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

startergo

macrumors 603
Sep 20, 2018
5,019
2,282
The previous video was 4K@60 and this is 8k@60 just few percents more in the CPU:
1596924340992.png
 

startergo

macrumors 603
Sep 20, 2018
5,019
2,282
In windows in Brave and Firefox I can't even play 8k@60hz video. It stutters like hell:
1596945692532.png

Good job Apple!
 

startergo

macrumors 603
Sep 20, 2018
5,019
2,282
1596947110049.png

Comparison with Windows Firefox GTX-1050TI and Ivy Bridge I7-3770 CPU. Pay attention to the Video Decoding engine usage and the 0 dropped frames.
 

Ritsuka

Cancelled
Sep 3, 2006
1,464
969
AppleGVA is always called even with software decoding. If hardware encoding is active, the VA driver of your GPU (Intel or AMD) is listed in VTDecoderXPCService. As I said numerous times now: This is not the case for VP9 and VA Drivers do not contain any VP9 support.

Here's a sample of VTDecoderXPCService that says that the decoded frame is coming directly from the GPU driver:

Code:
Sampling process 628 for 3 seconds with 1 millisecond of run time between samples
Sampling completed, processing symbols...
Analysis of sampling VTDecoderXPCService (pid 628) every 1 millisecond
Process:         VTDecoderXPCService [628]
Path:            /System/Library/Frameworks/VideoToolbox.framework/Versions/A/XPCServices/VTDecoderXPCService.xpc/Contents/MacOS/VTDecoderXPCService
Load Address:    0x10d63d000
Identifier:      VTDecoderXPCService
Version:         ???
Code Type:       X86-64
Parent Process:  ??? [1]

Date/Time:       2020-08-09 08:06:11.835 +0200
Launch Time:     2020-08-09 08:05:42.596 +0200
OS Version:      macOS 11.0 (20A5343i)
Report Version:  7
Analysis Tool:   /usr/bin/sample

Physical footprint:         174.7M
Physical footprint (peak):  174.7M
----

Call graph:
    2 Thread_8585   DispatchQueue_1: com.apple.main-thread  (serial)
    + 2 start  (in libdyld.dylib) + 1  [0x7fff6bc98851]
    +   2 main  (in VTDecoderXPCService) + 16  [0x10d640f96]
    +     2 xpc_main  (in libxpc.dylib) + 437  [0x7fff6bf254fb]
    +       2 _xpc_objc_main  (in libxpc.dylib) + 825  [0x7fff6bf25a73]
    +         2 -[NSRunLoop(NSRunLoop) run]  (in Foundation) + 76  [0x7fff2d3893e4]
    +           2 -[NSRunLoop(NSRunLoop) runMode:beforeDate:]  (in Foundation) + 212  [0x7fff2d2fafd1]
    +             2 CFRunLoopRunSpecific  (in CoreFoundation) + 563  [0x7fff2a927134]
    +               2 __CFRunLoopRun  (in CoreFoundation) + 1315  [0x7fff2a927d40]
    +                 2 __CFRunLoopServiceMachPort  (in CoreFoundation) + 316  [0x7fff2a929650]
    +                   2 mach_msg  (in libsystem_kernel.dylib) + 60  [0x7fff6be07590]
    +                     2 mach_msg_trap  (in libsystem_kernel.dylib) + 10  [0x7fff6be0721e]
    2 Thread_8595
    + 1 start_wqthread  (in libsystem_pthread.dylib) + 15  [0x7fff6bed04c3]
    + ! 1 _pthread_wqthread  (in libsystem_pthread.dylib) + 414  [0x7fff6bed1556]
    + !   1 __workq_kernreturn  (in libsystem_kernel.dylib) + 10  [0x7fff6be088de]
    + 1 start_wqthread  (in libsystem_pthread.dylib) + 0  [0x7fff6bed04b4]
    2 Thread_9123
    + 2 thread_start  (in libsystem_pthread.dylib) + 15  [0x7fff6bed04d7]
    +   2 _pthread_start  (in libsystem_pthread.dylib) + 224  [0x7fff6bed49b4]
    +     2 ???  (in AppleGVA)  load address 0x7fff3edea000 + 0x6b7be  [0x7fff3ee557be]
    +       2 ???  (in AppleGVA)  load address 0x7fff3edea000 + 0x6ba03  [0x7fff3ee55a03]
    +         2 ???  (in AppleGVA)  load address 0x7fff3edea000 + 0xb0978  [0x7fff3ee9a978]
    +           1 ???  (in AppleGVAVPXDecoder)  load address 0x10d760000 + 0x2e1c  [0x10d762e1c]
    +           ! 1 _CFRelease  (in CoreFoundation) + 238  [0x7fff2a9f2910]
    +           !   1 BBufFinalize  (in CoreMedia) + 144  [0x7fff2bdae860]
    +           !     1 receivedMemoryAllocator_Deallocate  (in CoreMedia) + 338  [0x7fff2be8b5ab]
    +           !       1 receivedMemoryAllocator_tellOriginToDecrementUseCountOfBlock  (in CoreMedia) + 270  [0x7fff2be8b6e5]
    +           !         1 -[OS_xpc_object dealloc]  (in libxpc.dylib) + 17  [0x7fff6bf157ec]
    +           !           1 _xpc_dictionary_dispose  (in libxpc.dylib) + 34  [0x7fff6bf15bbf]
    +           !             1 _xpc_dictionary_node_free  (in libxpc.dylib) + 68  [0x7fff6bf15cdf]
    +           !               1 -[OS_xpc_object dealloc]  (in libxpc.dylib) + 47  [0x7fff6bf1580a]
    +           !                 1 _objc_rootDealloc  (in libobjc.A.dylib) + 62  [0x7fff6aa15f42]
    +           !                   1 objc_destructInstance  (in libobjc.A.dylib) + 146  [0x7fff6aa16011]
    +           !                     1 objc_object::sidetable_clearDeallocating()  (in libobjc.A.dylib) + 83  [0x7fff6aa16315]
    +           !                       1 _os_unfair_lock_lock_slow  (in libsystem_platform.dylib) + 162  [0x7fff6bec5145]
    +           !                         1 __ulock_wait  (in libsystem_kernel.dylib) + 10  [0x7fff6be0896e]
    +           1 ???  (in AppleGVAVPXDecoder)  load address 0x10d760000 + 0x2ee4  [0x10d762ee4]
    +             1 VTDecoderSessionEmitDecodedFrame  (in VideoToolbox) + 1247  [0x7fff375093c8]
    +               1 ???  (in VideoToolbox)  load address 0x7fff37500000 + 0xf8cdd  [0x7fff375f8cdd]
    +                 1 ???  (in VideoToolbox)  load address 0x7fff37500000 + 0xe4074  [0x7fff375e4074]
    +                   1 xpc_connection_send_message_with_reply_sync  (in libxpc.dylib) + 238  [0x7fff6bf1b852]
    +                     1 dispatch_mach_send_with_result_and_wait_for_reply  (in libdispatch.dylib) + 50  [0x7fff6bc57abe]
    +                       1 _dispatch_mach_send_and_wait_for_reply  (in libdispatch.dylib) + 518  [0x7fff6bc576c6]
    +                         1 mach_msg  (in libsystem_kernel.dylib) + 60  [0x7fff6be07590]
    +                           1 mach_msg_trap  (in libsystem_kernel.dylib) + 10  [0x7fff6be0721e]
    1 Thread_8591
    + 1 start_wqthread  (in libsystem_pthread.dylib) + 15  [0x7fff6bed04c3]
    +   1 _pthread_wqthread  (in libsystem_pthread.dylib) + 414  [0x7fff6bed1556]
    +     1 __workq_kernreturn  (in libsystem_kernel.dylib) + 10  [0x7fff6be088de]
    1 Thread_8594
    + 1 thread_start  (in libsystem_pthread.dylib) + 15  [0x7fff6bed04d7]
    +   1 _pthread_start  (in libsystem_pthread.dylib) + 224  [0x7fff6bed49b4]
    +     1 _dispatch_worker_thread  (in libdispatch.dylib) + 284  [0x7fff6bc505e3]
    +       1 _dispatch_semaphore_wait_slow  (in libdispatch.dylib) + 58  [0x7fff6bc42066]
    +         1 _dispatch_sema4_timedwait  (in libdispatch.dylib) + 76  [0x7fff6bc41c3a]
    +           1 semaphore_timedwait_trap  (in libsystem_kernel.dylib) + 10  [0x7fff6be07272]
    1 Thread_8594   DispatchQueue_93: vtdecoder-connection-event-queue-0x7f9331419a00  (serial)
    + 1 thread_start  (in libsystem_pthread.dylib) + 15  [0x7fff6bed04d7]
    +   1 _pthread_start  (in libsystem_pthread.dylib) + 224  [0x7fff6bed49b4]
    +     1 _dispatch_worker_thread  (in libdispatch.dylib) + 218  [0x7fff6bc505a1]
    +       1 _dispatch_root_queue_drain  (in libdispatch.dylib) + 326  [0x7fff6bc507a5]
    +         1 _dispatch_lane_invoke  (in libdispatch.dylib) + 426  [0x7fff6bc4805e]
    +           1 _dispatch_lane_serial_drain  (in libdispatch.dylib) + 263  [0x7fff6bc47407]
    +             1 _dispatch_mach_invoke  (in libdispatch.dylib) + 498  [0x7fff6bc59508]
    +               1 _dispatch_lane_serial_drain  (in libdispatch.dylib) + 263  [0x7fff6bc47407]
    +                 1 _dispatch_mach_msg_invoke  (in libdispatch.dylib) + 441  [0x7fff6bc58997]
    +                   1 _dispatch_client_callout4  (in libdispatch.dylib) + 9  [0x7fff6bc417c7]
    +                     1 _xpc_connection_mach_event  (in libxpc.dylib) + 935  [0x7fff6bf1c140]
    +                       1 _xpc_connection_call_event_handler  (in libxpc.dylib) + 56  [0x7fff6bf1d2d4]
    +                         1 ???  (in VideoToolbox)  load address 0x7fff37500000 + 0xe4f33  [0x7fff375e4f33]
    +                           1 ???  (in AppleGVAVPXDecoder)  load address 0x10d760000 + 0x2c8d  [0x10d762c8d]
    +                             1 ???  (in AppleGVA)  load address 0x7fff3edea000 + 0xb0609  [0x7fff3ee9a609]
    +                               1 ???  (in AppleGVA)  load address 0x7fff3edea000 + 0xafab6  [0x7fff3ee99ab6]
    +                                 1 ???  (in AppleGVA)  load address 0x7fff3edea000 + 0x6b6b8  [0x7fff3ee556b8]
    +                                   1 ???  (in AppleGVA)  load address 0x7fff3edea000 + 0x6b77d  [0x7fff3ee5577d]
    +                                     1 ???  (in AppleIntelKBLGraphicsVADriver)  load address 0x114344000 + 0x2474b  [0x11436874b]
    +                                       1 ???  (in AppleIntelKBLGraphicsVADriver)  load address 0x114344000 + 0x277456  [0x1145bb456]
    +                                         1 ???  (in AppleIntelKBLGraphicsVADriver)  load address 0x114344000 + 0x277312  [0x1145bb312]
    +                                           1 ???  (in AppleIntelKBLGraphicsVADriver)  load address 0x114344000 + 0x20c222  [0x114550222]
    +                                             1 ???  (in AppleIntelKBLGraphicsVADriver)  load address 0x114344000 + 0x210005  [0x114554005]
    +                                               1 ???  (in AppleIntelKBLGraphicsVADriver)  load address 0x114344000 + 0x6b65d  [0x1143af65d]
    +                                                 1 ???  (in AppleIntelKBLGraphicsVADriver)  load address 0x114344000 + 0x65cae  [0x1143a9cae]
    +                                                   1 ???  (in AppleIntelKBLGraphicsVADriver)  load address 0x114344000 + 0x253b7e  [0x114597b7e]
    +                                                     1 IOAccelResourceFinishEvent  (in IOAccelerator) + 148  [0x7fff529e6354]
    +                                                       1 IOConnectCallMethod  (in IOKit) + 186  [0x7fff2da5491f]
    +                                                         1 io_connect_method  (in IOKit) + 383  [0x7fff2da54b08]
    +                                                           1 mach_msg  (in libsystem_kernel.dylib) + 60  [0x7fff6be07590]
    +                                                             1 mach_msg_trap  (in libsystem_kernel.dylib) + 10  [0x7fff6be0721e]
    1 Thread_8597
      1 start_wqthread  (in libsystem_pthread.dylib) + 0  [0x7fff6bed04b4]

Total number in stack (recursive counted multiple, when >=5):

Sort by top of stack, same collapsed (when >= 5):

I have no idea how you can say that's not hardware accelerated.
 

ArPe

macrumors 65816
May 31, 2020
1,281
3,325
‘Software encoding’ need only be mentioned when a browser app isn’t using Intel Quick Sync or discreet GPU or if that browser needs to be updated for sites like YouTube. There are examples from members above of some browsers failing to use Quick Sync even when the operating system (Big Sur and Windows) allows it.
 

ArPe

macrumors 65816
May 31, 2020
1,281
3,325
In windows in Brave and Firefox I can't even play 8k@60hz video. It stutters like hell:
View attachment 942240
Good job Apple!

Good job Apple but bad job Firefox and Brave for not using Quick Sync or improving YouTube support. Partial VP9 support was introduced with Skylake and full support came with Kabylake, Coffeelake etc
 

EugW

macrumors G5
Original poster
Jun 18, 2017
14,655
12,582
Good job Apple but bad job Firefox and Brave for not using Quick Sync or improving YouTube support. Partial VP9 support was introduced with Skylake and full support came with Kabylake, Coffeelake etc
Partial hardware VP9 decode support includes Haswell and Broadwell.
 

startergo

macrumors 603
Sep 20, 2018
5,019
2,282
Good job Apple but bad job Firefox and Brave for not using Quick Sync or improving YouTube support. Partial VP9 support was introduced with Skylake and full support came with Kabylake, Coffeelake etc
There is no VP9 support in quick sync in ivy bridge and no quick sync at all in Xeon x-5690 what I was testing with. VP8 support starts with Broadwell and partial VP9 support starts with Skylake. Kaby Lake, Coffee Lake, Whiskey Lake, Comet Lake add full fixed-function VP9 8-bit and 10-bit decoding acceleration and 8-bit encoding acceleration. So everything would be either software or hardware (through the video card) decoding.
 
Last edited:

CMMChris

macrumors 6502a
Oct 28, 2019
850
794
Germany (Bavaria)
Good job Apple but bad job Firefox and Brave for not using Quick Sync or improving YouTube support. Partial VP9 support was introduced with Skylake and full support came with Kabylake, Coffeelake etc

It doesn‘t work like that on macOS. Software doesn‘t have direct access to the decoders and encoders. They need to use Apple‘s VideoToolbox (AppleGVA) framework to implement it. It‘s Apple who did the poor job not supporting VP9 for so long. Now as they do, other browsers beside Safari will for sure offer accelerated VP9 playback as well.
 

ArPe

macrumors 65816
May 31, 2020
1,281
3,325
It doesn‘t work like that on macOS. Software doesn‘t have direct access to the decoders and encoders. They need to use Apple‘s VideoToolbox (AppleGVA) framework to implement it. It‘s Apple who did the poor job not supporting VP9 for so long. Now as they do, other browsers beside Safari will for sure offer accelerated VP9 playback as well.

I know that and that is what I’m saying. They should be updated for Big Sur by now after 2 months and 4 betas.
 

ArPe

macrumors 65816
May 31, 2020
1,281
3,325
VP9 hardware decoding has been added in beta 4, so less than a week ago. Firefox and Chrome surely will add support for it soon.

oh yes you’re right. The hot weather and this messy thread made me confused 😝😂

Anyway I don’t use the other browsers. I just want Safari and Big Sur to make better use of GPUs in every way possible.
 

Superhai

macrumors 6502a
Apr 21, 2010
734
577
I tried to embed a vp9 file with HDR in a html file, and Safari just keep trying to reload it but can’t play it. It would be interesting to see if it works differently on a Mac that’s supporting HDR.
 

iMacDragon

macrumors 68020
Oct 18, 2008
2,396
731
UK
I tried to embed a vp9 file with HDR in a html file, and Safari just keep trying to reload it but can’t play it. It would be interesting to see if it works differently on a Mac that’s supporting HDR.

a webm downloaded from youtube? what process using to try? could attempt it here.
 

EugW

macrumors G5
Original poster
Jun 18, 2017
14,655
12,582
I’m not seeing it in the Intel Quick Sync docs and Wikipedia entry I referred to.
I already posted a link from Intel indicating the Haswell and Broadwell support for partial VP9 decode acceleration, but here it is again:


Intel® Iris™ and HD Graphics Driver update posted for Haswell and Broadwell version 15.36.14.4080

New features with this release:
  • Improved video playback through partial hardware acceleration support for the VP9 video format.
  • Additional Open CL extension support:
    • cl_intel_subgroups – this extension enables work items to share data without use of shared local memory
    • cl_intel_advanced_motion_estimation – provides access to Intel's motion estimation hardware acceleration block that can be used by media processing applications including custom transcoders and image stabilization
  • Support for OpenGL extension:
    • GL_EXT_polygon_offset_clamp
  • GPU accelerated decode of HEVC video file format including both 8-bit and 10-bit support. This will provide improved video playback capabilities on the platforms listed in the following table.
 

jyavenard

macrumors member
Sep 15, 2004
35
9
Sweet. I guess we will have to see how far back that hardware decode goes. Certainly all the 2017 or later Macs have the Intel hardware decode built in, except on the iMac Pro and the Mac Pro. However, I wonder if Apple is also supporting it on the GPUs and if so, that would include the iMac Pro and latest Mac Pro.

It will never be supported on the iMac Pro nor the mac pro with the current graphic cards on offer as they do not support Vp9.
hardware decoding.
Only Navi based AMD card can do VP9.

At some stage on Windows, AMD had written an OpenCL accelerated driver, performance were awful and power usage very high (over 250W for the graphic card alone)
They have disabled that driver since.
 

jyavenard

macrumors member
Sep 15, 2004
35
9
excellent! If the computer does not support hardware decode vp9 honestly i would rather have x264 hardware decoded 1080p, wonder how they will handle that situation..


If you look at the webkit source code, you'll see that they only report vp9 as available (software) if using a desktop, or using a laptop when plugged on power.
 

jyavenard

macrumors member
Sep 15, 2004
35
9

jyavenard

macrumors member
Sep 15, 2004
35
9
a webm downloaded from youtube? what process using to try? could attempt it here.

For now Safari only supports webm via Media Source Extension (which is what youtube is using) you can't directly play a webm file. WebM in MSE was only enabled 2 weeks ago https://bugs.webkit.org/show_bug.cgi?id=214529


In windows in Brave and Firefox I can't even play 8k@60hz video. It stutters like hell:
View attachment 942240
Good job Apple!

It sucks in Windows because Apple EFI disable the intel GPU when booting into Windows ; you only get the AMD graphic card which can't do VP9 (only the navi based one like the 5700 can).
So no thanks to Apple for crippling the performance when booted under Windows.
 

jyavenard

macrumors member
Sep 15, 2004
35
9
I already posted a link from Intel indicating the Haswell and Broadwell support for partial VP9 decode acceleration, but here it is again:


Intel® Iris™ and HD Graphics Driver update posted for Haswell and Broadwell version 15.36.14.4080

This partial acceleration is useless. It's so bad that even Intel removed it from their drivers within 1 year of releasing it.
As far as features goes, you can consider both Haswell and Broadwell to *not* have VP9 at all ; they will do VP8 however.

Big Sur only supports VP9 hardware acceleration for Intel macs > Skylake.
 

jyavenard

macrumors member
Sep 15, 2004
35
9
So it doesn't even support Skylake?

This is the info I was given. TBH, I don't know if it's > or >=

The new MBP 2020 with a navi AMD could do it; but at this stage it seems that the VP9 HW decoder is always using the Intel CPU. I don't have any other machines to try with but this macbook pro.
I have an iMac Pro which will never do it (Xeon CPU don't have the required HW and the AMD Vega definitely can't do VP9)

I've noticed that the performance of VP9 playback when connected to an external screen sucked big time. Like you see the CPU usage shoot to 200% and the video completely freeze. It seems that the VideoToolbox reverts temporarily to software decoding whenever the playback window is covered by another or when switching from full screen to windowed.

In the Firefox image I linked to earlier; the VideoToolbox VP9 decoder is only used if it fully supports hardware decoding; otherwise it will use the ffvp9 software decoder.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.