Mpv: native 10 bit output for MS Windows 10 1709 and above (or possibly Windows 7 and above)

Created on 15 Dec 2017  ·  97Comments  ·  Source: mpv-player/mpv

mpv version and platform

 mpv 0.27.0-509-g3723e611fc-dirty (C) 2000-2017 mpv/MPlayer/mplayer2 projects
  built on Sat Dec  9 12:06:44 UTC 2017
 ffmpeg library versions:
    libavutil       56.5.100
    libavcodec      58.6.103
    libavformat     58.3.100
    libswscale      5.0.101
    libavfilter     7.7.100
    libswresample   3.0.101
 ffmpeg version: git-2017-12-08-713f9c5b5

Windows 7 SP1, Nvidia GTX970 with latest driver. HDMI (not sure which version) connecting to a 10-bit capable projector.

I have read some issues about 10 bit output. If I understand correctly, the key points in those posts are:

  • It depends on the OpenGL implementation.
  • It has been tested that on Linux, 10 bit works. May need a few more configurations (e.g., in xorg.conf)
  • Before windows 10 creator's update, full screen exclusive mode is a must for 10 bit output
  • After windows 10 creator's update, borderless windowed full screen also works.

My questions are:

  1. Does fullscreen ( by double clicking the mpv window) combined with ontop make mpv full screen exclusive on windows? Or just borderless windowed?
    Because I read in the manual that
    Makes the player window stay on top of other windows.
    On Windows, if combined with fullscreen mode, this causes mpv to be treated as exclusive fullscreen window that bypasses the Desktop Window Manager.

If it is FSE, then

  1. What kind of gpu-api and gpu-context provide 10 bit output when it is in FSE mode?
    Currently I am using gpu-api=vulkan, others set to auto, and the log shows:
[   0.025][v][vo/gpu/vulkan] Initializing GPU context 'winvk'
[   0.025][v][vo/gpu/vulkan] Creating instance with extensions:
[   0.025][v][vo/gpu/vulkan]     VK_KHR_surface
[   0.025][v][vo/gpu/vulkan]     VK_KHR_win32_surface
[   0.120][v][vo/gpu/vulkan] Probing for vulkan devices:
[   0.120][v][vo/gpu/vulkan]     GPU 0: GeForce GTX 970 (discrete)
[   0.120][v][vo/gpu/vulkan] Chose device:
[   0.120][v][vo/gpu/vulkan]     Device Name: GeForce GTX 970
[   0.120][v][vo/gpu/vulkan]     Device ID: 10de:13c2
[   0.120][v][vo/gpu/vulkan]     Driver version: 1628356608
[   0.120][v][vo/gpu/vulkan]     API version: 1.0.56
[   0.120][v][vo/gpu/vulkan] Initializing SPIR-V compiler 'shaderc'
[   0.120][v][vo/gpu/vulkan] Queue families supported by device:
[   0.120][v][vo/gpu/vulkan]     QF 0: flags 0xf num 16
[   0.120][v][vo/gpu/vulkan]     QF 1: flags 0x4 num 1
[   0.120][v][vo/gpu/vulkan] Using graphics queue (QF 0)
[   0.120][v][vo/gpu/vulkan] Using async transfer (QF 1)
[   0.120][v][vo/gpu/vulkan] Creating vulkan device with extensions:
[   0.120][v][vo/gpu/vulkan]     VK_KHR_swapchain
[   0.152][v][vo/gpu/vulkan] Allocating 1048576 memory of type 0x1 (id 7) in heap 0.
[   0.154][v][vo/gpu/vulkan] Allocating 1048576 memory of type 0x1 (id 7) in heap 0.
[   0.155][v][vo/gpu] Testing FBO format rgba32f
[   0.155][v][vo/gpu] Resizing texture: 16x16
[   0.155][v][vo/gpu] Using FBO format rgba32f.

I configured the correct output bit depth in Nvidia control panel and turned dither off there.
I can confirm that madVR once enters the FSE mode, it is outputing native 10 bit (deband off, dither off, still no banding compared to 8 bit).

In mpv.conf, I set ontop, deband=no and dither-depth=no to do the test. However, 10 bit test patterns still show banding no matter the mpv window is in full screen or not.

This is telling me that my system can do 10 bit output but my current mpv configuration is preventing me from doing so. Is there any ways to enable 10 bit? Do I need to upgrade to windows 10?

win vovulkan

Most helpful comment

@zc62 Ah great. I've also been experimenting with this. I have a branch that lets you manually set the format of the backbuffer and the DXGI colourspace tagging (no auto-detection yet here either.)

The branch is here: https://github.com/rossy/mpv/tree/high-bit-depth-experiment
Build here: https://files.jrg.systems/mpv-10bit-x86_64-20171226-git-a134537.7z

The (non-final) options are --d3d11-colorspace, --d3d11-format and --d3d11-exclusive (for exclusive FS.) As far as I can tell, there are only four combinations of --d3d11-colorspace and --d3d11-format that work:

  • --d3d11-colorspace=srgb --d3d11-format=rgba8 --target-trc=srgb --target-prim=bt.709
    8-bit sRGB/BT.709
  • --d3d11-colorspace=srgb --d3d11-format=rgb10_a2 --target-trc=srgb --target-prim=bt.709
    10-bit sRGB/BT.709
  • --d3d11-colorspace=linear --d3d11-format=rgba16f --target-trc=linear --target-prim=bt.709
    16-bit linear RGB
  • --d3d11-colorspace=hdr --d3d11-format=rgb10_a2 --target-trc=pq --target-prim=bt.2020
    10-bit HDR

Since I don't have test hardware myself, it would be great if people with high-bit-depth, wide-gamut or HDR monitors could test this and tell me which modes are useful and which work on the desktop, in windowed fullscreen and in exclusive fullscreen.

As for auto-detection, I have a tool that dumps the DXGI 1.6 data.

Source: https://gist.github.com/rossy/fb7b476d272ae166d635156f07d20264
Binary: https://files.jrg.systems/dxgiinfo.7z

As above, if anyone has high-bit-depth, wide-gamut or HDR monitors and Windows 10 1709, it would be great if you could run that tool on your computer and report the results. My results are here. For high-bit-depth, there should be at least one output with Bits-per-color: 10 or Bits-per-color: 12.

I can also verify by eye that the output bit-depth is indeed 10 bit, although the log still shows Reported display depth: 8

Yeah, the display depth detection is pretty naive at the moment. That should be fixed in my branch.

I think --dither-depth=auto needs to respect this option, but might make the selection a bit complicated. Because when not in FSE (before win10 1709) or borderless FS (win10 1709), it still needs to dither to the original choice (usually 8), then change to 10 when it enters FS(E), and go back to 8 when leaves FS(E). (This may also apply to DXGI format being used, but it seems okay to use 10 bit formats while actually displaying 8 bit?) Again, before DXGI 1.6 is used we can make FSE a hard requirement.

Well, the same formats supported for borderless FS should be supported in windowed mode as well. I don't know whether it truncates to 8-bit or not though. For exclusive FS, you're right. As far as I remember, Windows 7 supports formats for scan-out (rgb10_a2) that are not supported in windowed mode.

All 97 comments

For starters, you could post the full log

@haasn

mpv --no-config --profile=gpu-hq --gpu-api=vulkan --gpu-context=auto --spirv-compiler=auto --deband=no --dither-depth=no --ontop --screen=1 --fullscreen --fs-screen=1

mpv.log

The test file is

Stacey Spears created a 2160p HEVC Rotating 8bit and 10bit Quantization Artifact test pattern

from avsforum.

First of all, disabling dithering for this file makes little sense because it
is using a different colorspace (YUV) than your display (RGB).
Without dithering, you would get quantization artifacts no matter what.

@lachs0r
I did try enabling dithering too.
--dither-depth=auto always dither to 8: mpv_dither_auto.log
Here is the one with --dither-depth=10: mpv_dither_10.log

With 8 bit dithering, banding is reduced in the 10 bit test pattern.
With 10 bit dithering, banding is there, untouched, visually identical to without dithering.

Can you upload the output of vulkaninfo?

This time I tested with a RGB48 picture. (disabled dithering)
Log: 16bit_tif.log

I could see clearly lines between 255 shades when using mpv and madvr windowed 8 bit. With madvr full screen exclusive 10 bit, the picture is smooth.

@zc62 From your vulkaninfo link:

Presentable Surfaces:
=====================
GPU id       : 0 (GeForce GTX 970)
Surface type : VK_KHR_win32_surface
Formats:        count = 2
    B8G8R8A8_UNORM
    B8G8R8A8_SRGB
Present Modes:      count = 3
    FIFO_KHR
    FIFO_RELAXED_KHR
    MAILBOX_KHR

This means that your version of vulkan only makes available 8-bit surfaces. This is either a limitation of your drivers, of the windows compositor, or (most likely) a combination of both. So from the vulkan side of things, there's basically nothing we can do except complain to your vendor.

Your vulkan instance also doesn't support “direct” display access, so we can't bypass the compositor and render directly to the display with 10-bit precision either.

d3d11 is most likely going to be your best bet, but @rossy needs to help you here.

@haasn Thanks. Could you tell me where one can find about whether the vulkan instance supports "direct" display access or not in the vulkaninfo log?

I wonder if switching to windows 10 1709 helps...

@haasn Thanks. Could you tell me where one can find about whether the vulkan instance supports "direct" display access or not in the vulkaninfo log?

It would have to support the VK_KHR_display extension. But I think it's a red herring, since that would most likely also imply being unable to have the windows compositor running at the same time on the display. It's meant for VR headsets and the like, and also for actually implementing compositors (e.g. wayland) or for embedded applications (e.g. rendering to framebuffer).

Your first priority should be making sure that 10-bit surface formats are supported, since these will be picked up and used by mpv automatically when running in vulkan mode.

Tried --gpu-api=d3d11, no luck. Still 8 bit.

I asked one who has a 10 bit monitor, a GTX1070 card and windows 10 1703, his vulkaninfo also gives 8 bit only and no VK_KHR_display. He did test d3d11 too, the same outcome as mine.

I don't know if this observation is related or not, the log (both mine and his) always says:

[   0.200][v][vo/gpu] Reported display depth: 8

Wondering if there is anyone succeeded in letting mpv output 10 bit on any version of MS windows?

It doesn't look like it that --ontop leads to FSE with D3D11, I don't notice any difference to borderless on Windows 10 AU (with Vulkan, I notice a short black switching transition which is not there without --ontop).

@aufkrawall Have you ever gotten 10 bit with any of these combinations? Sounds like vulkan+ontop gives you true FSE?

I can't test if output is actually 10 bit since my display doesn't support it.

It is frustrating that I couldn't even collect one sample... Maybe mpv users are mostly on Linux or macOS.

I re-tested today because last time I forgot to turn Aero and desktop composition off, but it still does not seem to give me any indication of 10 bit output among all the possible gpu-context that I can make them display this log:

d3d11.log:[   0.153][v][vo/gpu] Reported display depth: 8
d3d11.log:[   0.154][v][vo/gpu] Reported display depth: 8
opengl-angle.log:[   0.143][v][vo/gpu] Reported display depth: 8
opengl-angle.log:[   0.143][v][vo/gpu] Reported display depth: 8
opengl-dxinterop.log:[   0.209][v][vo/gpu] Reported display depth: 8
opengl-dxinterop.log:[   0.209][v][vo/gpu] Reported display depth: 8
opengl-win.log:[   0.223][v][vo/gpu] Reported display depth: 8
opengl-win.log:[   0.224][v][vo/gpu] Reported display depth: 8
vulkan.log:[   0.299][v][vo/gpu] Reported display depth: 8
vulkan.log:[   0.299][v][vo/gpu] Reported display depth: 8

while I expect 8 and 12 (or 10?) for my 8 bit monitor + 12 bit projector set.
Logs:
d3d11.log
opengl-angle.log
opengl-dxinterop.log
opengl-win.log
vulkan.log

@haasn @rossy Now I understand because of the limitation of OpenGL/Vulkan implementation from my vendor (angle says Google Inc., vulkan is from Nvidia driver), 10 bit shouldn't be expected with gpu-api=opengl or vulkan. But how about d3d11? Is d3d11 in mpv written with native 10 bit output support? Because madVR can work with 10 bit, I am curious if this is a bug or just a feature that has not been implemented yet? (I couldn't really find time to read the source code to find it out on my own... sorry)

Related issue is #3613. It didn't help because discussions were all about macOS and linux.

I think Rossy once said that the D3D11 renderer has to use a newer DXGI version in order to output 10 bit, I guess that's not implemented yet.
I can understand that it may feel a bit unsatisfying when you have a 10 bit capable display, however 10 bit output is not that important. It basically only means lower noise level when doing dithering, and when outputting 8 bit, dithering noise already is invisible when watching from a normal position.

By the way, this is not directly relevant to your issue but I decided to go ahead and test it again to make sure:

  • On nvidia + linux, setting the X.org display depth to 30 bits works with the latest nvidia drivers
  • glxinfo lists only 10-bit framebuffers in this configuration, as does xdpyinfo (only lists 10-bit visuals)
  • vulkaninfo lists 10-bit surface formats:
Presentable Surfaces:
=====================
GPU id       : 0 (GeForce GTX 970)
Surface type : VK_KHR_xcb_surface
Formats:                count = 2
        A2B10G10R10_UNORM_PACK32
        A2B10G10R10_SNORM_PACK32
Present Modes:          count = 3
        FIFO_KHR
        FIFO_RELAXED_KHR
        IMMEDIATE_KHR
  • mpv with --gpu-api=vulkan successfully detects this as 10-bit and dithers to the correct depth:
    vo/gpu: Reported display depth: 10
    ...
    vo/gpu: Dither to 10.

So the issue is neither a limitation of the vulkan implementation in mpv, nor is it of nvidia's hardware, vulkan drivers, or anything else along that stack. The only limitation is due to Microsoft Windows.

In Windows, you need NVIDIA Quadro if you want that functionality. Capitalism, Ho!

What about Intel or AMD?

With the HDR garbage, 10 bit output is becoming a common requirement too.

@haasn Yes I understand the limitation comes from MS Windows and other software vendors. But when it comes to d3d11, I think the system is ready to get 10 bit (as what madVR has already accomplished) and there is work to do in mpv?

@Jj0YzL5nvJ
(I was wrong in my previous comment. Edit:)
Yes the page says:

NVIDIA Geforce graphics cards have offered 10-bit per color out to a full screen Direct X surface since the Geforce 200 series GPUs.

So we do have 10 bit support with FSE DX (borderless FS for win 10 CU), as madVR has showed to me.

Due to the way most applications use traditional Windows API functions to create the application UI and viewport display

OpenGL 10-bit per color buffers which require an NVIDIA Quadro GPU with DisplayPort connector

This tells me that mpv with opengl/vulkan may need a Quadro card in windows.

@wm4
I know some AMD cards support 10 bit, not limited to Firepro only. But I don't have one, can somebody test?

Intel says

Intel Graphics support 10-bit color since Sandy Bridge (2nd Generation). The driver will automatically enable 10-bit when running full screen DirectX* applications that supports it on a 10-bit capable Display.

I do have a laptop with intel i5-5200u, but if I remember correctly, last time I tested with it I didn't get 10 bit at all, madvr or mpv, Win 10 1709. Maybe it is because I was using optimus to let GTX940m render and output to intel.

It looks like our swapchain creation code does not try 10 bit formats at all. I think rossy actually made experiments into this direction.

Yeah. d3d11 and angle will always use an 8-bit backbuffer because it will only try to create the formats in this list:
https://github.com/mpv-player/mpv/blob/a721dac6012d/video/out/gpu/d3d11_helpers.c#L320-L323

We could add the rgb10_a2 and rgba16f formats to that list, but I think mpv would always choose them if we did that, even on 8-bit monitors. The proper solution would be to detect if the current monitor uses high bit-depth and only use the high bit-depth backbuffers in that case, like MS's D3D12HDR sample. Detecting high bit-depth support requires DXGI 1.6, so Windows 10 version 1709.

As for fullscreen exclusive mode, d3d11, angle and dxinterop should never use it, because they never call SetFullscreenState(). Only opengl (win) and vulkan (winvk) can enter exclusive mode, but the driver decides when to enter exclusive mode and mpv doesn't get much of a say. The documentation for the --ontop option is a bit misleading because it only applies to opengl and it only makes the driver more likely to decide to enter exclusive mode.

But how about d3d11? Is d3d11 in mpv written with native 10 bit output support? Because madVR can work with 10 bit, I am curious if this is a bug or just a feature that has not been implemented yet?

Yep, this is a feature request. mpv's d3d11 backend is the most likely to gain 10-bit support in the future, but it doesn't support it at the moment. I'm probably not the best person to implement it because I don't have hardware to test with, but if no one else does it, I might try to add 10-bit support blindly.

Detecting high bit-depth support requires DXGI 1.6, so Windows 10 version 1709.

I think it will be great that mpv in win 10 1709 and above can auto-detect the bit-depth. On the other hand, do you think it is possible for win 7 users to enable 10 bit manually? Because I think madVR does not have an auto-detection mechanism either. One sets the bit-depth manually for each device:
madvr

As for fullscreen exclusive mode, d3d11, angle and dxinterop should never use it, because they never call SetFullscreenState().

Is it possible to add fullscreen exclusive to them?

I don't think Rossy actually meant that mpv currently can already make use of Win 10 1709 DXGI 1.6 to detect 10 bit capable displays (it sounds like it the way you wrote it), but it's the way he would implement 10 bit output functionality in future. :)

Yes, I think I got his point, that's why I changed the title to feature request. I mean without implementing auto-detection for 10 bit, we can start from implementing manual selection of the output bit-depth. The auto-detection will definitely be a great bonus if implemented, but will of course work only on win 10 1709 and later, while manual selection should work for windows 7.

There's probably still some chance btw. that it currently already works with Vulkan + Win 10 Creator's Update 2 since also madVR 10 bit output works with this version in borderless windowed fullscreen.

That might not be the case, because madVR utilizes DX, not vulkan. According to @Jj0YzL5nvJ 10-bit per color support on NVIDIA Geforce GPUs, at least OpenGL programs need Quadro cards. Vulkan? I don't know, but I don't see 10 bit from vulkaninfo (nvidia 940M + intel 5200u + Win10 1709).

Is it possible to add fullscreen exclusive to them?

Yep. Support for exclusive FS would be useful. It's a bit harder than it sounds because of interactions with the win32 resizing code, but it shouldn't be too difficult to support.

I did something naive to test FSE and 10 bit in d3d11:

diff --git a/video/out/d3d11/context.c b/video/out/d3d11/context.c
index b02d2e80ce..55fc98df17 100644
--- a/video/out/d3d11/context.c
+++ b/video/out/d3d11/context.c
@@ -105,6 +105,7 @@ static bool resize(struct ra_ctx *ctx)

     ra_tex_free(ctx->ra, &p->backbuffer);

+    hr = IDXGISwapChain_SetFullscreenState(p->swapchain, true, NULL);
     hr = IDXGISwapChain_ResizeBuffers(p->swapchain, 0, ctx->vo->dwidth,
         ctx->vo->dheight, DXGI_FORMAT_UNKNOWN, 0);
     if (FAILED(hr)) {
diff --git a/video/out/gpu/d3d11_helpers.c b/video/out/gpu/d3d11_helpers.c
index b96b03a093..bcac2462a7 100644
--- a/video/out/gpu/d3d11_helpers.c
+++ b/video/out/gpu/d3d11_helpers.c
@@ -318,8 +318,9 @@ bool mp_d3d11_create_swapchain(ID3D11Device *dev, struct mp_log *log,
     // Try B8G8R8A8_UNORM first, since at least in Windows 8, it's always the
     // format of the desktop image
     static const DXGI_FORMAT formats[] = {
-        DXGI_FORMAT_B8G8R8A8_UNORM,
-        DXGI_FORMAT_R8G8B8A8_UNORM,
+        DXGI_FORMAT_R10G10B10A2_UNORM,
+        //DXGI_FORMAT_B8G8R8A8_UNORM,
+        //DXGI_FORMAT_R8G8B8A8_UNORM,
     };
     static const int formats_len = MP_ARRAY_SIZE(formats);
     bool flip = factory2 && opts->flip;

I do see the black screen transition that indicates a successful switch to FSE. I can also verify by eye that the output bit-depth is indeed 10 bit, although the log still shows

[   0.727][v][vo/gpu] Reported display depth: 8

I guess what can be done are:

if (!fse && fullscreen && ontop) {
    hr = IDXGISwapChain_SetFullscreenState(p->swapchain, true, NULL);
    fse = true;
}
if (fse && (not fullscreen || not ontop)) {
    hr = IDXGISwapChain_SetFullscreenState(p->swapchain, false, NULL);
    fse = false;
}
static const DXGI_FORMAT formats_10[] = {
    DXGI_FORMAT_R10G10B10A2_UNORM,
};
static const DXGI_FORMAT formats_8[] = {
    DXGI_FORMAT_B8G8R8A8_UNORM,
    DXGI_FORMAT_R8G8B8A8_UNORM,
};

and add some options to let users choose between 8 bit (default) and 10 bit. For example, --d3d11-10bit=yes to prefer 10 bit formats, and --10bit-screen=<all|current|0-32> will be useful for multi-screen setups (they may have different bit-depths).

The auto selection based on DXGI 1.6 may follow, giving win10 1709 the possibility of choosing --d3d11-10bit=auto.

I think --dither-depth=auto needs to respect this option, but might make the selection a bit complicated. Because when not in FSE (before win10 1709) or borderless FS (win10 1709), it still needs to dither to the original choice (usually 8), then change to 10 when it enters FS(E), and go back to 8 when leaves FS(E). (This may also apply to DXGI format being used, but it seems okay to use 10 bit formats while actually displaying 8 bit?) Again, before DXGI 1.6 is used we can make FSE a hard requirement.

@zc62 Ah great. I've also been experimenting with this. I have a branch that lets you manually set the format of the backbuffer and the DXGI colourspace tagging (no auto-detection yet here either.)

The branch is here: https://github.com/rossy/mpv/tree/high-bit-depth-experiment
Build here: https://files.jrg.systems/mpv-10bit-x86_64-20171226-git-a134537.7z

The (non-final) options are --d3d11-colorspace, --d3d11-format and --d3d11-exclusive (for exclusive FS.) As far as I can tell, there are only four combinations of --d3d11-colorspace and --d3d11-format that work:

  • --d3d11-colorspace=srgb --d3d11-format=rgba8 --target-trc=srgb --target-prim=bt.709
    8-bit sRGB/BT.709
  • --d3d11-colorspace=srgb --d3d11-format=rgb10_a2 --target-trc=srgb --target-prim=bt.709
    10-bit sRGB/BT.709
  • --d3d11-colorspace=linear --d3d11-format=rgba16f --target-trc=linear --target-prim=bt.709
    16-bit linear RGB
  • --d3d11-colorspace=hdr --d3d11-format=rgb10_a2 --target-trc=pq --target-prim=bt.2020
    10-bit HDR

Since I don't have test hardware myself, it would be great if people with high-bit-depth, wide-gamut or HDR monitors could test this and tell me which modes are useful and which work on the desktop, in windowed fullscreen and in exclusive fullscreen.

As for auto-detection, I have a tool that dumps the DXGI 1.6 data.

Source: https://gist.github.com/rossy/fb7b476d272ae166d635156f07d20264
Binary: https://files.jrg.systems/dxgiinfo.7z

As above, if anyone has high-bit-depth, wide-gamut or HDR monitors and Windows 10 1709, it would be great if you could run that tool on your computer and report the results. My results are here. For high-bit-depth, there should be at least one output with Bits-per-color: 10 or Bits-per-color: 12.

I can also verify by eye that the output bit-depth is indeed 10 bit, although the log still shows Reported display depth: 8

Yeah, the display depth detection is pretty naive at the moment. That should be fixed in my branch.

I think --dither-depth=auto needs to respect this option, but might make the selection a bit complicated. Because when not in FSE (before win10 1709) or borderless FS (win10 1709), it still needs to dither to the original choice (usually 8), then change to 10 when it enters FS(E), and go back to 8 when leaves FS(E). (This may also apply to DXGI format being used, but it seems okay to use 10 bit formats while actually displaying 8 bit?) Again, before DXGI 1.6 is used we can make FSE a hard requirement.

Well, the same formats supported for borderless FS should be supported in windowed mode as well. I don't know whether it truncates to 8-bit or not though. For exclusive FS, you're right. As far as I remember, Windows 7 supports formats for scan-out (rgb10_a2) that are not supported in windowed mode.

Does --d3d11-exclusive still allow the player to be started in windowed mode? I think that would be most convenient. Really good to see the current --ontop method disappearing, maybe haasn has something similar in mind for Vulkan? :)

@aufkrawall Yep. --d3d11-exclusive just changes what happens when mpv enters fullscreen mode.

Really good to see the current --ontop method disappearing, maybe haasn has something similar in mind for Vulkan? :)

Well, this is definitely not the final version of the user interface. It's just an experiment. It might be an idea to make a generic --video-exclusive option (mirroring --audio-exclusive) so that any VO or gpu-context that supports taking exclusive control of a display device can share the same option.

As for --ontop, that was only ever a coincidence. There is no API in Windows to make an OpenGL app use exclusive fullscreen, but at some point it was discovered that the --ontop option made it more likely for some OpenGL drivers (I forget which ones) to decide to enter exclusive fullscreen mode. Eventually this behaviour was documented, but it wasn't intentional. If we add an intentional way to make mpv use exclusive fullscreen, it should definitely have its own option.

@rossy Thanks for the great job!

I tested the 10-bit BT.709 case, it seems that the swapchain is still created with 8-bit format. I added a few lines to see why:

diff --git a/video/out/gpu/d3d11_helpers.c b/video/out/gpu/d3d11_helpers.c
index d546404ac9..144b46f47e 100644
--- a/video/out/gpu/d3d11_helpers.c
+++ b/video/out/gpu/d3d11_helpers.c
@@ -372,8 +372,11 @@ bool mp_d3d11_create_swapchain(ID3D11Device *dev, struct mp_log *log,
                                           &swapchain);
             }
             if (SUCCEEDED(hr)) {
+                mp_verbose(log, "Opt format: %u\n", (unsigned)opts->format);
                 mp_verbose(log, "Swapchain format: %u\n", (unsigned)formats[i]);
                 break;
+            } else {
+                mp_verbose(log, "Format[%d] = %u failed\n", i, (unsigned)formats[i]);
             }
         }
         if (SUCCEEDED(hr))

which gives me:

[   0.128][v][vo/gpu/d3d11] Format[0] = 24 failed
[   0.129][v][vo/gpu/d3d11] Opt format: 24
[   0.129][v][vo/gpu/d3d11] Swapchain format: 87

while the numbers mean:

DXGI_FORMAT_R10G10B10A2_UNORM           = 24,
DXGI_FORMAT_B8G8R8A8_UNORM              = 87,

Not sure why R10G10B10A2 failed here, because I did get it working in my test.

With mpv-10bit-x86_64-20171226-git-a134537.7z and no extra config files, the following 3 combinations are tested, with and without --d3d11-exclusive. Command line options and logs are attached. (https://github.com/mpv-player/mpv/files/1587757/log-mpv-10bit-test.zip)

--d3d11-colorspace=srgb --d3d11-format=rgb10_a2 --target-trc=srgb --target-prim=bt.709 10-bit sRGB/BT.709
--d3d11-colorspace=linear --d3d11-format=rgba16f --target-trc=linear --target-prim=bt.709 16-bit linear RGB
--d3d11-colorspace=hdr --d3d11-format=rgb10_a2 --target-trc=pq --target-prim=bt.2020 10-bit HDR

Checked by eyes, when in full-screen, the 10-bit test image shows no artificial noise under all the three combinations with --d3d11-exclusive. And linear / rgba16f works without --d3d11-exclusive while the other two does not. In windowed mode none works.

Devices : Monitor LG 27UD58P (10bit, RGB gamut only) and Geforce 1070,
OS : Windows 10 1703
dxgiinfo output: Reported display depth: 8

More tests here. It seems that rgb10_a2 fails in every case. In contrary, rgba16f works. So my successful runs are:

  • --d3d11-colorspace=srgb --d3d11-format=rgba16f --target-trc=srgb --target-prim=bt.709
    16-bit sRGB/BT.709. Log: 16-bit_srgb.log
  • --d3d11-colorspace=linear --d3d11-format=rgba16f --target-trc=linear --target-prim=bt.709
    16-bit linear RGB. Log: 16-bit_linear.log
  • --d3d11-colorspace=hdr --d3d11-format=rgba16f --target-trc=pq --target-prim=bt.2020
    16-bit HDR. Log: 16-bit_hdr.log

How does a 16-bit float format actually work for a 10/12-bit device? How is it compared to 10-bit formats?

BTW, it looks like --d3d11-exclusive does not work properly with --fullscreen. Without --fullscreen, I double click the window then mpv correctly enters FSE. But with --fullscreen, mpv starts full screened but is not in exclusive mode.

Here is a full table of test result on my machine, target-trc and target-prim always follow --d3d11-colorspace so not included in the table.

| Colorspace | Format | Exclusive | Correct display in fullscreen |
| ------- | ----------- | ------------- | --- |
| srgb | rgb10_a2 | noexclusive | Fail (8bit-like) |
| hdr | rgb10_a2 | noexclusive | Fail (8bit-like) |
| linear | rgb10_a2 | noexclusive | Fail (8bit-like) |
| srgb | rgb10_a2 | exclusive | Good |
| hdr | rgb10_a2 | exclusive | Good |
| linear | rgb10_a2 | exclusive | Good |
| linear | rgba16f | noexclusive | Good |
| srgb | rgba16f | noexclusive | Good |
| hdr | rgba16f | noexclusive | Good |
| linear | rgba16f | exclusive | Good |
| srgb | rgba16f | exclusive | Good |
| hdr | rgba16f | exclusive | Good |

Only rga10_a2 requires exclusive full-screen to work but other combinations all work.

There's also #5161 (Notify the screen to change to HDR10 / Dolby Vision mode)

@WFKala I guess your

Correct display in fullscreen
Fail

means the swapchain is created successfully with rgb10_a2 format but the outcome looks like 8-bit, right?

Correct display in fullscreen
Fail
means the swapchain is created successfully with rgb10_a2 format but the outcome looks like 8-bit, right?

Yes, I have edited the comment to clarify that.

These tests are pretty useful. I guess the compositor doesn't like the 10 bit format?

OK I figured out why my naive test managed to use rgb10_a2.

[   0.154][d][vo/gpu/d3d11] Failed to create flip-model swapchain, trying bitblt
[   0.154][v][vo/gpu/d3d11] Swapchain format: 24
[   0.154][v][vo/gpu/d3d11] Using DXGI 1.2+
[   0.154][v][vo/gpu/d3d11] Using bitblt-model presentation

Because I had only rgb10_a2 in formats, if the flip-model fails, the bitblt-model will be tested and used. But in the current implementation of @rossy , it seems that once a format, even if the format is different from user-specified format, succeeded in flip-model swapchain creation, this format will be used. Then the user-specified d3d11-format will never be tested with bitblt-model. Is this intentional? (Personally I know nothing about what flip-model and bitblt-model mean... Do we want to prevent using bitblt?)

I did realize there is a --d3d11-flip option. Windows 7 seems to have bad support for flip-model. I think I can use --d3d11-flip=no then.

@rossy here are the results from your test app on a 12bit display, not sure if Coordinates is meant to be the display resolution, if so that's wrong as 4k (3840x2160)

Adapter 0:
  Device Name: NVIDIA GeForce GTX 960
  Device ID: 10de:1401 (rev a1)
  Subsystem ID: 1043:8520
  LUID: 0000000000008bb5
    Output 0:
      Device Name: \\.\DISPLAY1
      Coordinates: 1920x1080+0+0
      Attached to desktop: TRUE
      Bits-per-color: 12
      Color space: DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 (0)
      Red primary: 0.660, 0.340
      Green primary: 0.245, 0.670
      Blue primary: 0.130, 0.041
      White point: 0.313, 0.330
      Min luminance: 0.01 nits
      Max luminance: 1499 nits
      Max full-frame luminance: 799 nits
      Desktop mode: DXGI_FORMAT_B8G8R8A8_UNORM (87)
Adapter 1:
  Device Name: Microsoft Basic Render Driver
  Device ID: 1414:008c (rev 00)
  Subsystem ID: 0000:0000
  LUID: 000000000000952f

And with Windows HDR enabled

Adapter 0:
  Device Name: NVIDIA GeForce GTX 960
  Device ID: 10de:1401 (rev a1)
  Subsystem ID: 1043:8520
  LUID: 0000000000008bb5
    Output 0:
      Device Name: \\.\DISPLAY1
      Coordinates: 1920x1080+0+0
      Attached to desktop: TRUE
      Bits-per-color: 12
      Color space: DXGI_COLOR_SPACE_RGB_FULL_G2084_NONE_P2020 (12)
      Red primary: 0.660, 0.340
      Green primary: 0.245, 0.670
      Blue primary: 0.130, 0.041
      White point: 0.313, 0.330
      Min luminance: 0.01 nits
      Max luminance: 1499 nits
      Max full-frame luminance: 799 nits
      Desktop mode: DXGI_FORMAT_B8G8R8A8_UNORM (87)
Adapter 1:
  Device Name: Microsoft Basic Render Driver
  Device ID: 1414:008c (rev 00)
  Subsystem ID: 0000:0000
  LUID: 000000000000952f

Totally up for helping test / develop a fix as I would really like to Plex working with 4K HDR so I don't have to mess around with physical media,.

Tried to get a Windows dev environment up and running for this,so I could play around with it some more for, but every set of instructions for Windows seems to fail.

I've tried the following instructions to get a working environment:

  1. mpv-player/mpv - MSYS2 ffmpeg seems to old to build with as configure for mpv reports missing required library versions.
  2. shinchiro/mpv-winbuild-cmake - fails during ninja mpv on various requirement compiler compatibility tests, various errors from negative array size to internal compiler errors.
  3. mpv-player/mpv-build - dependency failures

All attempts where made on a current Windows 10 machines. Any pointers would be appreciated. I would like to try and avoid cross compiling from Linux if possible.

@stevenh If using MSYS2, try compiling ffmpeg git master. Remove ffmpeg you have installed then ./configure --prefix=$MSYSTEM_PREFIX && make && make install.
I got replies saying "you need ffmpeg git master" in PR #5182, but it seems that the guide does not really say this at all.

Note that if you want to get d3d11 backend to work you need to compile shaderc and crossc as well. Then copy those *.a files to $MSYSTEM_PREFIX/lib

Thanks @zc62 that got a working version of ffmpeg.

Looks like I'll need d3d11 backend so looking for any advice you have to get shaderc compiling?

@stevenh Simply follow what is in their readme: https://github.com/google/shaderc/blob/master/README.md#getting-and-building-shaderc

Here is the list of library files you may need (see 4.) but this document is slightly outdated. Some of the paths are different from what I got. Copy what you really get to /mingw64/lib: https://github.com/google/shaderc/tree/master/libshaderc#integrating-libshaderc

crossc is simpler, just clone SPIRV-Cross to crossc/SPIRV-Cross then simply make. Then you will get libcrossc.a.

@zc62 unfortunately I tried those instructions but no go as I couldnt get a working Ninja / cmake in MSYS2.

It seems to require Visual Studio 2013 Update 4 or later, inferring that a build under MSYS2 isn't possible?

@stevenh pacman -S cmake mingw-w64-x86_64-ninja

Much appreciated @zc62 had to manually install the header files along side the libs for shaderc but at least now I have been able to build mpv so thank you very much for the help.

This is the little shell script I used to do that.

#!/bin/sh

libdir="/mingw64/lib"
includedir="/mingw64/include"

for i in `find build -name '*.a'`; do
        echo "Installing $i..."
        cp $i $libdir
        if [ 0 -ne $? ]; then
                echo "Failed to install $i to $libdir"
                exit 1
        fi
done

for i in `find src -name include | grep -v third_party`; do
        echo "Installing $i..."
        rsync -av $i/ $includedir/
        if [ 0 -ne $? ]; then
                echo "Failed to sync $i to $includedir"
                exit 1
        fi
done

For reference the problem I had with ninja and cmake was that at one point I had a none mingw-w64-x86_64 of cmake, which then messed up the build directory, so even when I corrected that mistake it wasn't happy.

For crossc I also did a make install to get all the relevant files.

Apologies to everyone else for side tracking this thread to get me this far.

what happend to "full screen exclusive mode" in this commit ?

Even when HDR is switched on manually, Windows treats mpv as an SDR application and tone maps it to the "SDR content appearance" slider brightness, and uses SDR gamut and EOTF within the HDR signal. Maximizing the slider only allows the use of a higher peak brightness, but the gamut and EOTF are still incorrect.

So even in windowed and non-exclusive fullscreen mode, the correct DXGI format must be used so that HDR content isn't remapped to SDR.

Nvidia just allowed 10-bit color on GeForce desktop graphics cards (Pascal and above) in the latest Studio drivers: https://pcper.com/2019/07/nvidia-studio-driver-30-bit-color-geforce-titan/

I have a 10-bit capable monitor (LG 27UD68-W). I installed the Studio driver, turned on 10-bit colors, and tested @rossy 's build. I can confirm that the AVS Forum 10-bit sample looks smooth only when I have the screen in 10-bit mode and configure the build to use a 10-bit format with --d3d11-colorspace=srgb --d3d11-format=rgb10_a2 --target-trc=srgb --target-prim=bt.709. (Works both in fullscreen and windowed mode.)

dxgiinfo gives this information:

Adapter 0:
  Device Name: NVIDIA GeForce GTX 1660 Ti
  Device ID: 10de:2182 (rev a1)
  Subsystem ID: 1043:86a3
  LUID: 000000000067cdd2
    Output 0:
      Device Name: \\.\DISPLAY7
      Coordinates: 2560x1440+0+0
      Attached to desktop: TRUE
      Bits-per-color: 10
      Color space: DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 (0)
      Red primary: 0.652, 0.335
      Green primary: 0.305, 0.637
      Blue primary: 0.148, 0.062
      White point: 0.313, 0.329
      Min luminance: 0.5 nits
      Max luminance: 270 nits
      Max full-frame luminance: 270 nits
      Desktop mode: DXGI_FORMAT_B8G8R8A8_UNORM (87)
    Output 1:
      Device Name: \\.\DISPLAY6
      Coordinates: 1920x1080-16+3840
      Attached to desktop: TRUE
      Bits-per-color: 8
      Color space: DXGI_COLOR_SPACE_RGB_FULL_G22_NONE_P709 (0)
      Red primary: 0.641, 0.338
      Green primary: 0.315, 0.629
      Blue primary: 0.159, 0.059
      White point: 0.313, 0.329
      Min luminance: 0.5 nits
      Max luminance: 270 nits
      Max full-frame luminance: 270 nits
      Desktop mode: DXGI_FORMAT_B8G8R8A8_UNORM (87)
Adapter 1:
  Device Name: Microsoft Basic Render Driver
  Device ID: 1414:008c (rev 00)
  Subsystem ID: 0000:0000
  LUID: 000000000000b962

Might be a little bit off-topic (since we are mainly talking about the d3d11 native implementation of 10 bit presentation), I just want to recall that @haasn mentioned if vulkaninfo shows a presentable 10 bit surface format, it is likely that 10 bit should work (or it is just a necessary requirement?) Because recently I migrated to an AMD GPU, whose vulkaninfo shows:

Presentable Surfaces:
=====================
GPU id       : 0 (AMD Radeon RX 5700 XT)
Surface type : VK_KHR_win32_surface
Formats:        count = 20
    B8G8R8A8_UNORM
    B8G8R8A8_SNORM
    B8G8R8A8_SRGB
    R16G16B16A16_UNORM
    R16G16B16A16_SNORM
    R16G16B16A16_SFLOAT
    A2R10G10B10_UNORM_PACK32
    A2B10G10R10_UNORM_PACK32
    B10G11R11_UFLOAT_PACK32
    R8G8B8A8_UNORM
    A8B8G8R8_UNORM_PACK32
    R8G8B8A8_SNORM
    R8G8B8A8_SRGB
    A8B8G8R8_SNORM_PACK32
    A8B8G8R8_SRGB_PACK32
    R5G6B5_UNORM_PACK16
    B5G6R5_UNORM_PACK16
    A1R5G5B5_UNORM_PACK16
    R4G4B4A4_UNORM_PACK16
    B4G4R4A4_UNORM_PACK16

which looks like it has 10 bit capable formats.

Full vulkaninfo see here

==========
VULKANINFO
==========

Vulkan Instance Version: 1.1.106



Instance Extensions:
====================
Instance Extensions count = 11
    VK_EXT_debug_report                 : extension revision  9
    VK_EXT_debug_utils                  : extension revision  1
    VK_EXT_swapchain_colorspace         : extension revision  4
    VK_KHR_device_group_creation        : extension revision  1
    VK_KHR_external_fence_capabilities  : extension revision  1
    VK_KHR_external_memory_capabilities : extension revision  1
    VK_KHR_external_semaphore_capabilities: extension revision  1
    VK_KHR_get_physical_device_properties2: extension revision  1
    VK_KHR_get_surface_capabilities2    : extension revision  1
    VK_KHR_surface                      : extension revision 25
    VK_KHR_win32_surface                : extension revision  6
Layers: count = 4
=======
VK_LAYER_AMD_switchable_graphics (AMD switchable graphics layer) Vulkan version 1.1.109, layer version 1
    Layer Extensions    count = 0
    Devices     count = 1
        GPU id       : 0 (AMD Radeon RX 5700 XT)
        Layer-Device Extensions count = 0

VK_LAYER_LUNARG_standard_validation (LunarG Standard Validation Layer) Vulkan version 1.0.106, layer version 1
    Layer Extensions    count = 0
    Devices     count = 1
        GPU id       : 0 (AMD Radeon RX 5700 XT)
        Layer-Device Extensions count = 0

VK_LAYER_VALVE_steam_fossilize (Steam Pipeline Caching Layer) Vulkan version 1.1.73, layer version 1
    Layer Extensions    count = 0
    Devices     count = 1
        GPU id       : 0 (AMD Radeon RX 5700 XT)
        Layer-Device Extensions count = 0

VK_LAYER_VALVE_steam_overlay (Steam Overlay Layer) Vulkan version 1.1.73, layer version 1
    Layer Extensions    count = 0
    Devices     count = 1
        GPU id       : 0 (AMD Radeon RX 5700 XT)
        Layer-Device Extensions count = 0

Presentable Surfaces:
=====================
GPU id       : 0 (AMD Radeon RX 5700 XT)
Surface type : VK_KHR_win32_surface
Formats:        count = 20
    B8G8R8A8_UNORM
    B8G8R8A8_SNORM
    B8G8R8A8_SRGB
    R16G16B16A16_UNORM
    R16G16B16A16_SNORM
    R16G16B16A16_SFLOAT
    A2R10G10B10_UNORM_PACK32
    A2B10G10R10_UNORM_PACK32
    B10G11R11_UFLOAT_PACK32
    R8G8B8A8_UNORM
    A8B8G8R8_UNORM_PACK32
    R8G8B8A8_SNORM
    R8G8B8A8_SRGB
    A8B8G8R8_SNORM_PACK32
    A8B8G8R8_SRGB_PACK32
    R5G6B5_UNORM_PACK16
    B5G6R5_UNORM_PACK16
    A1R5G5B5_UNORM_PACK16
    R4G4B4A4_UNORM_PACK16
    B4G4R4A4_UNORM_PACK16
Present Modes:      count = 3
    IMMEDIATE_KHR
    FIFO_KHR
    FIFO_RELAXED_KHR
VkSurfaceCapabilitiesKHR:
    minImageCount       = 1
    maxImageCount       = 16
    currentExtent:
        width       = 256
        height      = 256
    minImageExtent:
        width       = 256
        height      = 256
    maxImageExtent:
        width       = 256
        height      = 256
    maxImageArrayLayers = 1
    supportedTransform:
        VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
    currentTransform:
        VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR
    supportedCompositeAlpha:
        VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR
    supportedUsageFlags:
        VK_IMAGE_USAGE_TRANSFER_SRC_BIT
        VK_IMAGE_USAGE_TRANSFER_DST_BIT
        VK_IMAGE_USAGE_SAMPLED_BIT
        VK_IMAGE_USAGE_STORAGE_BIT
        VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT
        VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT


Groups :
========
    Device Group Properties (Group 0) :
        physicalDeviceCount = 1

            AMD Radeon RX 5700 XT (ID: 0)

        subsetAllocation = 0

    Device Group Present Capabilities (Group 0) :

        AMD Radeon RX 5700 XT (ID: 0)
        Can present images from the following devices:
            AMD Radeon RX 5700 XT (ID: 0)

        Present modes:
            VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR



Device Properties and Extensions :
==================================
GPU0
VkPhysicalDeviceProperties:
===========================
    apiVersion     = 0x401071  (1.1.113)
    driverVersion  = 8388707 (0x800063)
    vendorID       = 0x1002
    deviceID       = 0x731f
    deviceType     = DISCRETE_GPU
    deviceName     = AMD Radeon RX 5700 XT
    VkPhysicalDeviceLimits:
    -----------------------
        maxImageDimension1D                     = 16384
        maxImageDimension2D                     = 16384
        maxImageDimension3D                     = 2048
        maxImageDimensionCube                   = 16384
        maxImageArrayLayers                     = 8192
        maxTexelBufferElements                  = 0xffffffff
        maxUniformBufferRange                   = 0xffffffff
        maxStorageBufferRange                   = 0xffffffff
        maxPushConstantsSize                    = 128
        maxMemoryAllocationCount                = 4096
        maxSamplerAllocationCount               = 1048576
        bufferImageGranularity                  = 0x1
        sparseAddressSpaceSize                  = 0xffd00000000
        maxBoundDescriptorSets                  = 32
        maxPerStageDescriptorSamplers           = 4294967295
        maxPerStageDescriptorUniformBuffers     = 4294967295
        maxPerStageDescriptorStorageBuffers     = 4294967295
        maxPerStageDescriptorSampledImages      = 4294967295
        maxPerStageDescriptorStorageImages      = 4294967295
        maxPerStageDescriptorInputAttachments   = 4294967295
        maxPerStageResources                    = 4294967295
        maxDescriptorSetSamplers                = 4294967295
        maxDescriptorSetUniformBuffers          = 4294967295
        maxDescriptorSetUniformBuffersDynamic   = 8
        maxDescriptorSetStorageBuffers          = 4294967295
        maxDescriptorSetStorageBuffersDynamic   = 8
        maxDescriptorSetSampledImages           = 4294967295
        maxDescriptorSetStorageImages           = 4294967295
        maxDescriptorSetInputAttachments        = 4294967295
        maxVertexInputAttributes                = 64
        maxVertexInputBindings                  = 32
        maxVertexInputAttributeOffset           = 0xffffffff
        maxVertexInputBindingStride             = 0x3fff
        maxVertexOutputComponents               = 128
        maxTessellationGenerationLevel          = 64
        maxTessellationPatchSize                        = 32
        maxTessellationControlPerVertexInputComponents  = 128
        maxTessellationControlPerVertexOutputComponents = 128
        maxTessellationControlPerPatchOutputComponents  = 120
        maxTessellationControlTotalOutputComponents     = 4096
        maxTessellationEvaluationInputComponents        = 128
        maxTessellationEvaluationOutputComponents       = 128
        maxGeometryShaderInvocations            = 127
        maxGeometryInputComponents              = 128
        maxGeometryOutputComponents             = 128
        maxGeometryOutputVertices               = 1024
        maxGeometryTotalOutputComponents        = 16384
        maxFragmentInputComponents              = 128
        maxFragmentOutputAttachments            = 8
        maxFragmentDualSrcAttachments           = 1
        maxFragmentCombinedOutputResources      = 4294967295
        maxComputeSharedMemorySize              = 0x8000
        maxComputeWorkGroupCount[0]             = 65535
        maxComputeWorkGroupCount[1]             = 65535
        maxComputeWorkGroupCount[2]             = 65535
        maxComputeWorkGroupInvocations          = 1024
        maxComputeWorkGroupSize[0]              = 1024
        maxComputeWorkGroupSize[1]              = 1024
        maxComputeWorkGroupSize[2]              = 1024
        subPixelPrecisionBits                   = 8
        subTexelPrecisionBits                   = 8
        mipmapPrecisionBits                     = 8
        maxDrawIndexedIndexValue                = 4294967295
        maxDrawIndirectCount                    = 4294967295
        maxSamplerLodBias                       = 15.996094
        maxSamplerAnisotropy                    = 16.000000
        maxViewports                            = 16
        maxViewportDimensions[0]                = 16384
        maxViewportDimensions[1]                = 16384
        viewportBoundsRange[0]                  = -32768.000000
        viewportBoundsRange[1]                  =  32767.000000
        viewportSubPixelBits                    = 8
        minMemoryMapAlignment                   = 64
        minTexelBufferOffsetAlignment           = 0x1
        minUniformBufferOffsetAlignment         = 0x10
        minStorageBufferOffsetAlignment         = 0x4
        minTexelOffset                          = -64
        maxTexelOffset                          =  63
        minTexelGatherOffset                    = -32
        maxTexelGatherOffset                    =  31
        minInterpolationOffset                  = -2.000000
        maxInterpolationOffset                  =  2.000000
        subPixelInterpolationOffsetBits         = 8
        maxFramebufferWidth                     = 16384
        maxFramebufferHeight                    = 16384
        maxFramebufferLayers                    = 2048
        framebufferColorSampleCounts            = 15
        framebufferDepthSampleCounts            = 15
        framebufferStencilSampleCounts          = 15
        framebufferNoAttachmentsSampleCounts    = 15
        maxColorAttachments                     = 8
        sampledImageColorSampleCounts           = 15
        sampledImageDepthSampleCounts           = 15
        sampledImageStencilSampleCounts         = 15
        sampledImageIntegerSampleCounts         = 15
        storageImageSampleCounts                = 15
        maxSampleMaskWords                      = 1
        timestampComputeAndGraphics             = 1
        timestampPeriod                         = 10.000000
        maxClipDistances                        = 8
        maxCullDistances                        = 8
        maxCombinedClipAndCullDistances         = 8
        discreteQueuePriorities                 = 2
        pointSizeRange[0]                       = 0.000000
        pointSizeRange[1]                       = 8191.875000
        lineWidthRange[0]                       = 0.000000
        lineWidthRange[1]                       = 8191.875000
        pointSizeGranularity                    = 0.125000
        lineWidthGranularity                    = 0.125000
        strictLines                             = 0
        standardSampleLocations                 = 1
        optimalBufferCopyOffsetAlignment        = 0x1
        optimalBufferCopyRowPitchAlignment      = 0x1
        nonCoherentAtomSize                     = 0x80
    VkPhysicalDeviceSparseProperties:
    ---------------------------------
        residencyStandard2DBlockShape            = 1
        residencyStandard2DMultisampleBlockShape = 0
        residencyStandard3DBlockShape            = 1
        residencyAlignedMipSize                  = 0
        residencyNonResidentStrict               = 1

VkPhysicalDevicePointClippingProperties:
========================================
    pointClippingBehavior               = 0

VkPhysicalDeviceMultiviewProperties:
====================================
    maxMultiviewViewCount     = 6
    maxMultiviewInstanceIndex = 4294967295

VkPhysicalDeviceMaintenance3Properties:
=======================================
    maxPerSetDescriptors    = 4294967295
    maxMemoryAllocationSize = 2147483648

VkPhysicalDeviceIDProperties:
=========================================
    deviceUUID      = 03000000-0000-0000-0000-000000000000
    driverUUID      = 414d442d-5749-4e2d-4452-560000000000
    deviceLUIDValid = true
    deviceLUID      = 4e920000-00000000
    deviceNodeMask  = 0x00000001

VkPhysicalDeviceDriverProperties:
=================================
    driverID   = 1
    driverName = AMD proprietary driver
    driverInfo = 
    conformanceVersion:
        major    = 1
        minor    = 1
        subminor = 1
        patch    = 2

VkPhysicalDeviceTransformFeedbackProperties
===========================================
    maxTransformFeedbackStreams                = 4
    maxTransformFeedbackBuffers                = 4
    maxTransformFeedbackBufferSize             = 4294967295
    maxTransformFeedbackStreamDataSize         = 512
    maxTransformFeedbackBufferDataSize         = 512
    maxTransformFeedbackBufferDataStride       = 512
    transformFeedbackQueries                   = 1
    transformFeedbackStreamsLinesTriangles     = 1
    transformFeedbackRasterizationStreamSelect = 0
    transformFeedbackDraw                      = 1

VkPhysicalDeviceDepthStencilResolveProperties
============================================
        supportedDepthResolveModes:
            VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR
            VK_RESOLVE_MODE_MIN_BIT_KHR
            VK_RESOLVE_MODE_MAX_BIT_KHR
        supportedStencilResolveModes:
            VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR
            VK_RESOLVE_MODE_MIN_BIT_KHR
            VK_RESOLVE_MODE_MAX_BIT_KHR
        independentResolveNone = 1
        independentResolve     = 1

Device Extensions   count = 83
    VK_AMD_buffer_marker                : extension revision  1
    VK_AMD_calibrated_timestamps        : extension revision  1
    VK_AMD_display_native_hdr           : extension revision  1
    VK_AMD_draw_indirect_count          : extension revision  1
    VK_AMD_gcn_shader                   : extension revision  1
    VK_AMD_gpa_interface                : extension revision  1
    VK_AMD_gpu_shader_half_float        : extension revision  2
    VK_AMD_gpu_shader_int16             : extension revision  2
    VK_AMD_memory_overallocation_behavior: extension revision  1
    VK_AMD_mixed_attachment_samples     : extension revision  1
    VK_AMD_negative_viewport_height     : extension revision  1
    VK_AMD_pipeline_compiler_control    : extension revision  1
    VK_AMD_shader_ballot                : extension revision  1
    VK_AMD_shader_core_properties       : extension revision  1
    VK_AMD_shader_core_properties2      : extension revision  1
    VK_AMD_shader_explicit_vertex_parameter: extension revision  1
    VK_AMD_shader_fragment_mask         : extension revision  1
    VK_AMD_shader_image_load_store_lod  : extension revision  1
    VK_AMD_shader_info                  : extension revision  1
    VK_AMD_shader_trinary_minmax        : extension revision  1
    VK_AMD_texture_gather_bias_lod      : extension revision  1
    VK_AMD_wave_limits                  : extension revision  1
    VK_EXT_conservative_rasterization   : extension revision  1
    VK_EXT_depth_clip_enable            : extension revision  1
    VK_EXT_depth_range_unrestricted     : extension revision  1
    VK_EXT_descriptor_indexing          : extension revision  2
    VK_EXT_external_memory_host         : extension revision  1
    VK_EXT_full_screen_exclusive        : extension revision  3
    VK_EXT_global_priority              : extension revision  2
    VK_EXT_hdr_metadata                 : extension revision  1
    VK_EXT_host_query_reset             : extension revision  1
    VK_EXT_inline_uniform_block         : extension revision  1
    VK_EXT_memory_budget                : extension revision  1
    VK_EXT_memory_priority              : extension revision  1
    VK_EXT_queue_family_foreign         : extension revision  1
    VK_EXT_sample_locations             : extension revision  1
    VK_EXT_sampler_filter_minmax        : extension revision  1
    VK_EXT_scalar_block_layout          : extension revision  1
    VK_EXT_separate_stencil_usage       : extension revision  1
    VK_EXT_shader_stencil_export        : extension revision  1
    VK_EXT_shader_subgroup_ballot       : extension revision  1
    VK_EXT_shader_subgroup_vote         : extension revision  1
    VK_EXT_shader_viewport_index_layer  : extension revision  1
    VK_EXT_subgroup_size_control        : extension revision  1
    VK_EXT_transform_feedback           : extension revision  1
    VK_EXT_vertex_attribute_divisor     : extension revision  3
    VK_GOOGLE_decorate_string           : extension revision  1
    VK_GOOGLE_hlsl_functionality1       : extension revision  1
    VK_KHR_16bit_storage                : extension revision  1
    VK_KHR_8bit_storage                 : extension revision  1
    VK_KHR_bind_memory2                 : extension revision  1
    VK_KHR_create_renderpass2           : extension revision  1
    VK_KHR_dedicated_allocation         : extension revision  3
    VK_KHR_depth_stencil_resolve        : extension revision  1
    VK_KHR_descriptor_update_template   : extension revision  1
    VK_KHR_device_group                 : extension revision  3
    VK_KHR_draw_indirect_count          : extension revision  1
    VK_KHR_driver_properties            : extension revision  1
    VK_KHR_external_fence               : extension revision  1
    VK_KHR_external_fence_win32         : extension revision  1
    VK_KHR_external_memory              : extension revision  1
    VK_KHR_external_memory_win32        : extension revision  1
    VK_KHR_external_semaphore           : extension revision  1
    VK_KHR_external_semaphore_win32     : extension revision  1
    VK_KHR_get_memory_requirements2     : extension revision  1
    VK_KHR_image_format_list            : extension revision  1
    VK_KHR_imageless_framebuffer        : extension revision  1
    VK_KHR_maintenance1                 : extension revision  2
    VK_KHR_maintenance2                 : extension revision  1
    VK_KHR_maintenance3                 : extension revision  1
    VK_KHR_multiview                    : extension revision  1
    VK_KHR_relaxed_block_layout         : extension revision  1
    VK_KHR_sampler_mirror_clamp_to_edge : extension revision  1
    VK_KHR_shader_atomic_int64          : extension revision  1
    VK_KHR_shader_draw_parameters       : extension revision  1
    VK_KHR_shader_float16_int8          : extension revision  1
    VK_KHR_storage_buffer_storage_class : extension revision  1
    VK_KHR_swapchain                    : extension revision 70
    VK_KHR_swapchain_mutable_format     : extension revision  1
    VK_KHR_uniform_buffer_standard_layout: extension revision  1
    VK_KHR_variable_pointers            : extension revision  1
    VK_KHR_vulkan_memory_model          : extension revision  3
    VK_KHR_win32_keyed_mutex            : extension revision  1

VkQueueFamilyProperties[0]:
===========================
    queueFlags         = GRAPHICS | COMPUTE | TRANSFER | SPARSE
    queueCount         = 1
    timestampValidBits = 64
    minImageTransferGranularity = (1, 1, 1)
    present support    = true

VkQueueFamilyProperties[1]:
===========================
    queueFlags         = COMPUTE | TRANSFER | SPARSE
    queueCount         = 2
    timestampValidBits = 64
    minImageTransferGranularity = (1, 1, 1)
    present support    = true

VkQueueFamilyProperties[2]:
===========================
    queueFlags         = TRANSFER | SPARSE
    queueCount         = 2
    timestampValidBits = 64
    minImageTransferGranularity = (16, 16, 8)
    present support    = true

VkPhysicalDeviceMemoryProperties:
=================================
    memoryHeapCount       = 3
    memoryHeaps[0] :
        size          = 8304721920 (0x1ef000000) (7.73 GiB)
        budget        = 6948115968
        usage         = 1048576
        flags:
            VK_MEMORY_HEAP_DEVICE_LOCAL_BIT
    memoryHeaps[1] :
        size          = 8295284736 (0x1ee700000) (7.73 GiB)
        budget        = 7708148121
        usage         = 659456
        flags:
            None
    memoryHeaps[2] :
        size          = 268435456 (0x10000000) (256.00 MiB)
        budget        = 224585568
        usage         = 0
        flags:
            VK_MEMORY_HEAP_DEVICE_LOCAL_BIT
    memoryTypeCount       = 4
    memoryTypes[0] :
        heapIndex     = 0
        propertyFlags = 0x1:
            VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
        usable for:
            OPTIMAL: color images, D16_UNORM, D32_SFLOAT, S8_UINT, D16_UNORM_S8_UINT, D32_SFLOAT_S8_UINT
            LINEAR: color images
    memoryTypes[1] :
        heapIndex     = 1
        propertyFlags = 0x6:
            VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
            VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
        usable for:
            OPTIMAL: color images, D16_UNORM, D32_SFLOAT, S8_UINT, D16_UNORM_S8_UINT, D32_SFLOAT_S8_UINT
            LINEAR: color images
    memoryTypes[2] :
        heapIndex     = 2
        propertyFlags = 0x7:
            VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
            VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
            VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
        usable for:
            OPTIMAL: color images, D16_UNORM, D32_SFLOAT, S8_UINT, D16_UNORM_S8_UINT, D32_SFLOAT_S8_UINT
            LINEAR: color images
    memoryTypes[3] :
        heapIndex     = 1
        propertyFlags = 0xe:
            VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
            VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
            VK_MEMORY_PROPERTY_HOST_CACHED_BIT
        usable for:
            OPTIMAL: color images, D16_UNORM, D32_SFLOAT, S8_UINT, D16_UNORM_S8_UINT, D32_SFLOAT_S8_UINT
            LINEAR: color images

VkPhysicalDeviceFeatures:
=========================
    robustBufferAccess                      = 1
    fullDrawIndexUint32                     = 1
    imageCubeArray                          = 1
    independentBlend                        = 1
    geometryShader                          = 1
    tessellationShader                      = 1
    sampleRateShading                       = 1
    dualSrcBlend                            = 1
    logicOp                                 = 1
    multiDrawIndirect                       = 1
    drawIndirectFirstInstance               = 1
    depthClamp                              = 1
    depthBiasClamp                          = 1
    fillModeNonSolid                        = 1
    depthBounds                             = 1
    wideLines                               = 1
    largePoints                             = 1
    alphaToOne                              = 0
    multiViewport                           = 1
    samplerAnisotropy                       = 1
    textureCompressionETC2                  = 0
    textureCompressionASTC_LDR              = 0
    textureCompressionBC                    = 1
    occlusionQueryPrecise                   = 1
    pipelineStatisticsQuery                 = 1
    vertexPipelineStoresAndAtomics          = 1
    fragmentStoresAndAtomics                = 1
    shaderTessellationAndGeometryPointSize  = 1
    shaderImageGatherExtended               = 1
    shaderStorageImageExtendedFormats       = 1
    shaderStorageImageMultisample           = 1
    shaderStorageImageReadWithoutFormat     = 1
    shaderStorageImageWriteWithoutFormat    = 1
    shaderUniformBufferArrayDynamicIndexing = 1
    shaderSampledImageArrayDynamicIndexing  = 1
    shaderStorageBufferArrayDynamicIndexing = 1
    shaderStorageImageArrayDynamicIndexing  = 1
    shaderClipDistance                      = 1
    shaderCullDistance                      = 1
    shaderFloat64                           = 1
    shaderInt64                             = 1
    shaderInt16                             = 1
    shaderResourceResidency                 = 1
    shaderResourceMinLod                    = 1
    sparseBinding                           = 1
    sparseResidencyBuffer                   = 1
    sparseResidencyImage2D                  = 1
    sparseResidencyImage3D                  = 1
    sparseResidency2Samples                 = 0
    sparseResidency4Samples                 = 0
    sparseResidency8Samples                 = 0
    sparseResidency16Samples                = 0
    sparseResidencyAliased                  = 1
    variableMultisampleRate                 = 1
    inheritedQueries                        = 1

VkPhysicalDevice8BitStorageFeatures:
=====================================
    storageBuffer8BitAccess           = 1
    uniformAndStorageBuffer8BitAccess = 1
    storagePushConstant8              = 0

VkPhysicalDevice16BitStorageFeatures:
=====================================
    storageBuffer16BitAccess           = 1
    uniformAndStorageBuffer16BitAccess = 1
    storagePushConstant16              = 0
    storageInputOutput16               = 1

VkPhysicalDeviceVariablePointerFeatures:
========================================
    variablePointersStorageBuffer = 1
    variablePointers              = 1

VkPhysicalDeviceMultiviewFeatures:
==================================
    multiview                   = 1
    multiviewGeometryShader     = 0
    multiviewTessellationShader = 1

VkPhysicalDeviceFloat16Int8Features:
====================================
    shaderFloat16 = 1
    shaderInt8    = 1

VkPhysicalDeviceShaderAtomicInt64Features:
==========================================
    shaderBufferInt64Atomics = 1
    shaderSharedInt64Atomics = 1

VkPhysicalDeviceTransformFeedbackFeatures:
==========================================
    transformFeedback = 1
    geometryStreams   = 1

VkPhysicalDeviceScalarBlockLayoutFeatures:
==========================================
    scalarBlockLayout = 1

VkPhysicalDeviceMemoryPriorityFeatures:
======================================
    memoryPriority = 1

Format Properties:
==================

FORMAT_R4G4_UNORM_PACK8,
FORMAT_E5B9G9R9_UFLOAT_PACK32:
    linearTiling   FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    optimalTiling  FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    bufferFeatures FormatFeatureFlags:
        None

FORMAT_R4G4B4A4_UNORM_PACK16,
FORMAT_B4G4R4A4_UNORM_PACK16,
FORMAT_R5G6B5_UNORM_PACK16,
FORMAT_B5G6R5_UNORM_PACK16,
FORMAT_R5G5B5A1_UNORM_PACK16,
FORMAT_B5G5R5A1_UNORM_PACK16,
FORMAT_A1R5G5B5_UNORM_PACK16:
    linearTiling   FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    optimalTiling  FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    bufferFeatures FormatFeatureFlags:
        None

FORMAT_R8_UNORM,
FORMAT_R8_SNORM,
FORMAT_R8G8_UNORM,
FORMAT_R8G8_SNORM,
FORMAT_R8G8B8A8_UNORM,
FORMAT_R8G8B8A8_SNORM,
FORMAT_B8G8R8A8_UNORM,
FORMAT_B8G8R8A8_SNORM,
FORMAT_A8B8G8R8_UNORM_PACK32,
FORMAT_A8B8G8R8_SNORM_PACK32,
FORMAT_A2R10G10B10_UNORM_PACK32,
FORMAT_A2B10G10R10_UNORM_PACK32,
FORMAT_R16_UNORM,
FORMAT_R16_SNORM,
FORMAT_R16_SFLOAT,
FORMAT_R16G16_UNORM,
FORMAT_R16G16_SNORM,
FORMAT_R16G16_SFLOAT,
FORMAT_R16G16B16A16_UNORM,
FORMAT_R16G16B16A16_SNORM,
FORMAT_R16G16B16A16_SFLOAT,
FORMAT_R32_SFLOAT,
FORMAT_R32G32_SFLOAT,
FORMAT_R32G32B32A32_SFLOAT,
FORMAT_B10G11R11_UFLOAT_PACK32:
    linearTiling   FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    optimalTiling  FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    bufferFeatures FormatFeatureFlags:
        VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8_USCALED,
FORMAT_R8_SSCALED,
FORMAT_R8G8_USCALED,
FORMAT_R8G8_SSCALED,
FORMAT_R8G8B8A8_USCALED,
FORMAT_R8G8B8A8_SSCALED,
FORMAT_B8G8R8A8_USCALED,
FORMAT_B8G8R8A8_SSCALED,
FORMAT_A8B8G8R8_USCALED_PACK32,
FORMAT_A8B8G8R8_SSCALED_PACK32,
FORMAT_A2R10G10B10_USCALED_PACK32,
FORMAT_A2B10G10R10_USCALED_PACK32,
FORMAT_R16_USCALED,
FORMAT_R16_SSCALED,
FORMAT_R16G16_USCALED,
FORMAT_R16G16_SSCALED,
FORMAT_R16G16B16A16_USCALED,
FORMAT_R16G16B16A16_SSCALED:
    linearTiling   FormatFeatureFlags:
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    optimalTiling  FormatFeatureFlags:
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT

    bufferFeatures FormatFeatureFlags:
        VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8_UINT,
FORMAT_R8_SINT,
FORMAT_R8G8_UINT,
FORMAT_R8G8_SINT,
FORMAT_R16_UINT,
FORMAT_R16_SINT,
FORMAT_R32G32_UINT,
FORMAT_R32G32_SINT,
FORMAT_R32G32B32A32_UINT,
FORMAT_R32G32B32A32_SINT:
    linearTiling   FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    optimalTiling  FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    bufferFeatures FormatFeatureFlags:
        VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R8_SRGB,
FORMAT_R8G8_SRGB,
FORMAT_R8G8B8A8_SRGB,
FORMAT_B8G8R8A8_SRGB,
FORMAT_A8B8G8R8_SRGB_PACK32:
    linearTiling   FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    optimalTiling  FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    bufferFeatures FormatFeatureFlags:
        None

FORMAT_R8G8B8A8_UINT,
FORMAT_R8G8B8A8_SINT,
FORMAT_B8G8R8A8_UINT,
FORMAT_B8G8R8A8_SINT,
FORMAT_A8B8G8R8_UINT_PACK32,
FORMAT_A8B8G8R8_SINT_PACK32,
FORMAT_A2R10G10B10_UINT_PACK32,
FORMAT_A2B10G10R10_UINT_PACK32,
FORMAT_R16G16_UINT,
FORMAT_R16G16_SINT,
FORMAT_R16G16B16A16_UINT,
FORMAT_R16G16B16A16_SINT,
FORMAT_R32_UINT,
FORMAT_R32_SINT:
    linearTiling   FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    optimalTiling  FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    bufferFeatures FormatFeatureFlags:
        VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT
        VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_A2R10G10B10_SNORM_PACK32,
FORMAT_A2R10G10B10_SSCALED_PACK32,
FORMAT_A2R10G10B10_SINT_PACK32,
FORMAT_A2B10G10R10_SNORM_PACK32,
FORMAT_A2B10G10R10_SSCALED_PACK32,
FORMAT_A2B10G10R10_SINT_PACK32,
FORMAT_R64_UINT,
FORMAT_R64_SINT,
FORMAT_R64_SFLOAT,
FORMAT_R64G64_UINT,
FORMAT_R64G64_SINT,
FORMAT_R64G64_SFLOAT,
FORMAT_R64G64B64_UINT,
FORMAT_R64G64B64_SINT,
FORMAT_R64G64B64_SFLOAT,
FORMAT_R64G64B64A64_UINT,
FORMAT_R64G64B64A64_SINT,
FORMAT_R64G64B64A64_SFLOAT:
    linearTiling   FormatFeatureFlags:
        None

    optimalTiling  FormatFeatureFlags:
        None

    bufferFeatures FormatFeatureFlags:
        VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32G32B32_UINT,
FORMAT_R32G32B32_SINT:
    linearTiling   FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    optimalTiling  FormatFeatureFlags:
        None

    bufferFeatures FormatFeatureFlags:
        VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_R32G32B32_SFLOAT:
    linearTiling   FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    optimalTiling  FormatFeatureFlags:
        None

    bufferFeatures FormatFeatureFlags:
        VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT

FORMAT_D16_UNORM,
FORMAT_D32_SFLOAT:
    linearTiling   FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    optimalTiling  FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT
        VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    bufferFeatures FormatFeatureFlags:
        VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT

FORMAT_S8_UINT:
    linearTiling   FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    optimalTiling  FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT
        VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_BLIT_DST_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    bufferFeatures FormatFeatureFlags:
        VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT
        VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT

FORMAT_D16_UNORM_S8_UINT,
FORMAT_D32_SFLOAT_S8_UINT:
    linearTiling   FormatFeatureFlags:
        None

    optimalTiling  FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    bufferFeatures FormatFeatureFlags:
        None

FORMAT_BC1_RGB_UNORM_BLOCK,
FORMAT_BC1_RGB_SRGB_BLOCK,
FORMAT_BC1_RGBA_UNORM_BLOCK,
FORMAT_BC1_RGBA_SRGB_BLOCK,
FORMAT_BC2_UNORM_BLOCK,
FORMAT_BC2_SRGB_BLOCK,
FORMAT_BC3_UNORM_BLOCK,
FORMAT_BC3_SRGB_BLOCK,
FORMAT_BC4_UNORM_BLOCK,
FORMAT_BC4_SNORM_BLOCK,
FORMAT_BC5_UNORM_BLOCK,
FORMAT_BC5_SNORM_BLOCK,
FORMAT_BC6H_UFLOAT_BLOCK,
FORMAT_BC6H_SFLOAT_BLOCK,
FORMAT_BC7_UNORM_BLOCK,
FORMAT_BC7_SRGB_BLOCK:
    linearTiling   FormatFeatureFlags:
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    optimalTiling  FormatFeatureFlags:
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT
        VK_FORMAT_FEATURE_BLIT_SRC_BIT
        VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT
        VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR
        VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR

    bufferFeatures FormatFeatureFlags:
        None

Unsupported formats:
FORMAT_UNDEFINED
FORMAT_R8G8B8_UNORM
FORMAT_R8G8B8_SNORM
FORMAT_R8G8B8_USCALED
FORMAT_R8G8B8_SSCALED
FORMAT_R8G8B8_UINT
FORMAT_R8G8B8_SINT
FORMAT_R8G8B8_SRGB
FORMAT_B8G8R8_UNORM
FORMAT_B8G8R8_SNORM
FORMAT_B8G8R8_USCALED
FORMAT_B8G8R8_SSCALED
FORMAT_B8G8R8_UINT
FORMAT_B8G8R8_SINT
FORMAT_B8G8R8_SRGB
FORMAT_R16G16B16_UNORM
FORMAT_R16G16B16_SNORM
FORMAT_R16G16B16_USCALED
FORMAT_R16G16B16_SSCALED
FORMAT_R16G16B16_UINT
FORMAT_R16G16B16_SINT
FORMAT_R16G16B16_SFLOAT
FORMAT_X8_D24_UNORM_PACK32
FORMAT_D24_UNORM_S8_UINT
FORMAT_ETC2_R8G8B8_UNORM_BLOCK
FORMAT_ETC2_R8G8B8_SRGB_BLOCK
FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK
FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK
FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK
FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK
FORMAT_EAC_R11_UNORM_BLOCK
FORMAT_EAC_R11_SNORM_BLOCK
FORMAT_EAC_R11G11_UNORM_BLOCK
FORMAT_EAC_R11G11_SNORM_BLOCK
FORMAT_ASTC_4x4_UNORM_BLOCK
FORMAT_ASTC_4x4_SRGB_BLOCK
FORMAT_ASTC_5x4_UNORM_BLOCK
FORMAT_ASTC_5x4_SRGB_BLOCK
FORMAT_ASTC_5x5_UNORM_BLOCK
FORMAT_ASTC_5x5_SRGB_BLOCK
FORMAT_ASTC_6x5_UNORM_BLOCK
FORMAT_ASTC_6x5_SRGB_BLOCK
FORMAT_ASTC_6x6_UNORM_BLOCK
FORMAT_ASTC_6x6_SRGB_BLOCK
FORMAT_ASTC_8x5_UNORM_BLOCK
FORMAT_ASTC_8x5_SRGB_BLOCK
FORMAT_ASTC_8x6_UNORM_BLOCK
FORMAT_ASTC_8x6_SRGB_BLOCK
FORMAT_ASTC_8x8_UNORM_BLOCK
FORMAT_ASTC_8x8_SRGB_BLOCK
FORMAT_ASTC_10x5_UNORM_BLOCK
FORMAT_ASTC_10x5_SRGB_BLOCK
FORMAT_ASTC_10x6_UNORM_BLOCK
FORMAT_ASTC_10x6_SRGB_BLOCK
FORMAT_ASTC_10x8_UNORM_BLOCK
FORMAT_ASTC_10x8_SRGB_BLOCK
FORMAT_ASTC_10x10_UNORM_BLOCK
FORMAT_ASTC_10x10_SRGB_BLOCK
FORMAT_ASTC_12x10_UNORM_BLOCK
FORMAT_ASTC_12x10_SRGB_BLOCK
FORMAT_ASTC_12x12_UNORM_BLOCK
FORMAT_ASTC_12x12_SRGB_BLOCK
FORMAT_G8B8G8R8_422_UNORM
FORMAT_B8G8R8G8_422_UNORM
FORMAT_G8_B8_R8_3PLANE_420_UNORM
FORMAT_G8_B8R8_2PLANE_420_UNORM
FORMAT_G8_B8_R8_3PLANE_422_UNORM
FORMAT_G8_B8R8_2PLANE_422_UNORM
FORMAT_G8_B8_R8_3PLANE_444_UNORM
FORMAT_R10X6_UNORM_PACK16
FORMAT_R10X6G10X6_UNORM_2PACK16
FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16
FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16
FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16
FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16
FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16
FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16
FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16
FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16
FORMAT_R12X4_UNORM_PACK16
FORMAT_R12X4G12X4_UNORM_2PACK16
FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16
FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16
FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16
FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16
FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16
FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16
FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16
FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16
FORMAT_G16B16G16R16_422_UNORM
FORMAT_B16G16R16G16_422_UNORM
FORMAT_G16_B16_R16_3PLANE_420_UNORM
FORMAT_G16_B16R16_2PLANE_420_UNORM
FORMAT_G16_B16_R16_3PLANE_422_UNORM
FORMAT_G16_B16R16_2PLANE_422_UNORM
FORMAT_G16_B16_R16_3PLANE_444_UNORM

However, mpv (git master) is still giving me 8 bit outputs, with --gpu-api=vulkan --fs --ontop. Any ideas?

Full log here

[   0.003][v][cplayer] mpv 0.29.0-353-g65b1c2d065 Copyright © 2000-2019 mpv/MPlayer/mplayer2 projects
[   0.003][v][cplayer]  built on Sun Jul 14 20:16:49 +08 2019
[   0.003][v][cplayer] ffmpeg library versions:
[   0.003][v][cplayer]    libavutil       56.30.100
[   0.003][v][cplayer]    libavcodec      58.53.101
[   0.003][v][cplayer]    libavformat     58.28.102
[   0.003][v][cplayer]    libswscale      5.4.101
[   0.003][v][cplayer]    libavfilter     7.56.101
[   0.003][v][cplayer]    libswresample   3.4.100
[   0.003][v][cplayer] ffmpeg version: git-2019-07-13-f86f213a
[   0.003][v][cplayer] 
[   0.003][v][cplayer] Configuration: /home/shinchiro/build/build64/packages/mpv-prefix/src/mpv/waf configure --enable-static-build --enable-pdf-build --disable-manpage-build --enable-libmpv-shared --enable-lua --enable-javascript --enable-libarchive --enable-libass --enable-libbluray --enable-dvdread --enable-dvdnav --enable-uchardet --enable-rubberband --enable-lcms2 --enable-openal --enable-spirv-cross --enable-vulkan --enable-vapoursynth --prefix=/home/shinchiro/build/build64/install/mingw
[   0.255][v][cplayer] List of enabled features: asm atomics build-date cplayer cuda-hwaccel d3d-hwaccel d3d11 d3d9-hwaccel debug-build direct3d dos-paths drmprime dvdnav dvdread dvdread-common egl-angle egl-angle-win32 egl-helpers ffmpeg ffnvcodec gl gl-dxinterop gl-dxinterop-d3d9 gl-win32 glob glob-win32 gnuc gpl iconv javascript jpeg lcms2 libaf libarchive libass libass-osd libav-any libavcodec libavdevice libbluray libm libmpv-shared libplacebo lua luajit mingw noexecstack openal optimize plain-gl posix-or-mingw rubberband shaderc shaderc-static spirv-cross spirv-cross-static static-build stdatomic uchardet vapoursynth vapoursynth-core vapoursynth-lazy vulkan wasapi win32-desktop win32-internal-pthreads win32-pipes zlib
[   0.256][v][cplayer] Command line options: '.\Spears_Munsil_Quantazation_Test_2160p.mp4' '--no-config' '--screen=1' '--fs' '--fs-screen=1' '--gpu-api=vulkan' '--ontop' '--log-file=vulkan.log'
[   0.256][v][cplayer] mpv 0.29.0-353-g65b1c2d065 Copyright © 2000-2019 mpv/MPlayer/mplayer2 projects
[   0.256][v][cplayer]  built on Sun Jul 14 20:16:49 +08 2019
[   0.256][v][cplayer] ffmpeg library versions:
[   0.256][v][cplayer]    libavutil       56.30.100
[   0.256][v][cplayer]    libavcodec      58.53.101
[   0.256][v][cplayer]    libavformat     58.28.102
[   0.256][v][cplayer]    libswscale      5.4.101
[   0.256][v][cplayer]    libavfilter     7.56.101
[   0.256][v][cplayer]    libswresample   3.4.100
[   0.256][v][cplayer] ffmpeg version: git-2019-07-13-f86f213a
[   0.256][v][cplayer] 
[   0.256][v][cplayer] Configuration: /home/shinchiro/build/build64/packages/mpv-prefix/src/mpv/waf configure --enable-static-build --enable-pdf-build --disable-manpage-build --enable-libmpv-shared --enable-lua --enable-javascript --enable-libarchive --enable-libass --enable-libbluray --enable-dvdread --enable-dvdnav --enable-uchardet --enable-rubberband --enable-lcms2 --enable-openal --enable-spirv-cross --enable-vulkan --enable-vapoursynth --prefix=/home/shinchiro/build/build64/install/mingw
[   0.256][v][cplayer] List of enabled features: asm atomics build-date cplayer cuda-hwaccel d3d-hwaccel d3d11 d3d9-hwaccel debug-build direct3d dos-paths drmprime dvdnav dvdread dvdread-common egl-angle egl-angle-win32 egl-helpers ffmpeg ffnvcodec gl gl-dxinterop gl-dxinterop-d3d9 gl-win32 glob glob-win32 gnuc gpl iconv javascript jpeg lcms2 libaf libarchive libass libass-osd libav-any libavcodec libavdevice libbluray libm libmpv-shared libplacebo lua luajit mingw noexecstack openal optimize plain-gl posix-or-mingw rubberband shaderc shaderc-static spirv-cross spirv-cross-static static-build stdatomic uchardet vapoursynth vapoursynth-core vapoursynth-lazy vulkan wasapi win32-desktop win32-internal-pthreads win32-pipes zlib
[   0.256][d][cplayer] Setting option 'config' = 'no' (flags = 8)
[   0.257][d][cplayer] Setting option 'screen' = '1' (flags = 8)
[   0.257][d][cplayer] Setting option 'fs' = '' (flags = 8)
[   0.257][d][cplayer] Setting option 'fs-screen' = '1' (flags = 8)
[   0.262][d][cplayer] Setting option 'gpu-api' = 'vulkan' (flags = 8)
[   0.262][d][cplayer] Setting option 'ontop' = '' (flags = 8)
[   0.262][d][cplayer] Setting option 'log-file' = 'vulkan.log' (flags = 8)
[   0.267][d][global] user path: 'vulkan.log' -> 'vulkan.log'
[   0.267][d][osc] Loading lua script @osc.lua...
[   0.267][d][ytdl_hook] Loading lua script @ytdl_hook.lua...
[   0.267][d][stats] Loading lua script @stats.lua...
[   0.268][v][cplayer] Waiting for scripts...
[   0.268][d][osc] loading mp.defaults
[   0.268][d][stats] loading mp.defaults
[   0.268][d][ytdl_hook] loading mp.defaults
[   0.270][d][osc] loading @osc.lua
[   0.270][d][stats] loading @stats.lua
[   0.270][d][ytdl_hook] loading @ytdl_hook.lua
[   0.272][d][ytdl_hook] reading options for ytdl_hook 
[   0.272][v][ytdl_hook] script-opts/ytdl_hook.conf not found. 
[   0.272][v][ytdl_hook] lua-settings/ytdl_hook.conf not found. 
[   0.273][d][stats] reading options for stats 
[   0.273][v][stats] script-opts/stats.conf not found. 
[   0.273][v][stats] lua-settings/stats.conf not found. 
[   0.276][d][cplayer] Run command: define-section, flags=64, args=[input_stats, i script-binding stats/display-stats
[   0.276][d][cplayer] , default]
[   0.276][d][cplayer] Run command: enable-section, flags=64, args=[input_stats, allow-hide-cursor+allow-vo-dragging]
[   0.276][d][cplayer] Run command: define-section, flags=64, args=[input_forced_stats, , force]
[   0.276][d][cplayer] Run command: enable-section, flags=64, args=[input_forced_stats, allow-hide-cursor+allow-vo-dragging]
[   0.276][d][cplayer] Run command: define-section, flags=64, args=[input_stats, I script-binding stats/display-stats-toggle
[   0.276][d][cplayer] i script-binding stats/display-stats
[   0.277][d][cplayer] , default]
[   0.277][d][osc] reading options for osc 
[   0.277][v][osc] script-opts/osc.conf not found. 
[   0.277][v][osc] lua-settings/osc.conf not found. 
[   0.277][d][cplayer] Run command: enable-section, flags=64, args=[input_stats, allow-hide-cursor+allow-vo-dragging]
[   0.277][d][cplayer] Run command: define-section, flags=64, args=[input_forced_stats, , force]
[   0.277][d][cplayer] Run command: enable-section, flags=64, args=[input_forced_stats, allow-hide-cursor+allow-vo-dragging]
[   0.277][d][cplayer] Run command: define-section, flags=64, args=[input_stats, i script-binding stats/display-stats
[   0.277][d][cplayer] I script-binding stats/display-stats-toggle
[   0.277][d][cplayer] , default]
[   0.277][d][cplayer] Run command: enable-section, flags=64, args=[input_stats, allow-hide-cursor+allow-vo-dragging]
[   0.277][d][cplayer] Run command: define-section, flags=64, args=[input_forced_stats, , force]
[   0.277][d][cplayer] Run command: enable-section, flags=64, args=[input_forced_stats, allow-hide-cursor+allow-vo-dragging]
[   0.277][d][cplayer] Run command: define-section, flags=64, args=[input_stats, i script-binding stats/display-stats
[   0.277][d][cplayer] I script-binding stats/display-stats-toggle
[   0.277][d][cplayer] , default]
[   0.278][d][cplayer] Run command: enable-section, flags=64, args=[input_stats, allow-hide-cursor+allow-vo-dragging]
[   0.278][d][cplayer] Run command: define-section, flags=64, args=[input_forced_stats, , force]
[   0.278][d][cplayer] Run command: enable-section, flags=64, args=[input_forced_stats, allow-hide-cursor+allow-vo-dragging]
[   0.279][d][cplayer] Run command: define-section, flags=64, args=[showhide, mouse_move script-binding osc/__keybinding1
[   0.279][d][cplayer] mouse_leave script-binding osc/__keybinding2
[   0.279][d][cplayer] , force]
[   0.279][d][cplayer] Run command: enable-section, flags=64, args=[showhide, allow-hide-cursor+allow-vo-dragging]
[   0.279][d][cplayer] Run command: define-section, flags=64, args=[input, mbtn_left script-binding osc/__keybinding3
[   0.279][d][cplayer] shift+mbtn_left script-binding osc/__keybinding4
[   0.279][d][cplayer] mbtn_right script-binding osc/__keybinding5
[   0.279][d][cplayer] wheel_up script-binding osc/__keybinding6
[   0.279][d][cplayer] wheel_down script-binding osc/__keybinding7
[   0.325][d][cplayer] mbtn_left_dbl ignore
[   0.325][d][cplayer] shift+mbtn_left_dbl ignore
[   0.325][d][cplayer] mbtn_right_dbl ignore
[   0.325][d][cplayer] , force]
[   0.325][d][cplayer] Run command: enable-section, flags=64, args=[input, ]
[   0.325][d][cplayer] Run command: define-section, flags=64, args=[input_osc, , default]
[   0.325][d][cplayer] Run command: enable-section, flags=64, args=[input_osc, allow-hide-cursor+allow-vo-dragging]
[   0.325][d][cplayer] Run command: define-section, flags=64, args=[input_forced_osc, , force]
[   0.325][d][cplayer] Run command: enable-section, flags=64, args=[input_forced_osc, allow-hide-cursor+allow-vo-dragging]
[   0.326][v][cplayer] Done loading scripts.
[   0.326][d][global] config path: 'watch_later' -> '-'
[   0.326][d][global] config path: 'watch_later' -> '-'
[   0.328][i][cplayer] Playing: .\Spears_Munsil_Quantazation_Test_2160p.mp4
[   0.328][v][cplayer] Running hook: ytdl_hook/on_load
[   0.328][v][ytdl_hook] ytdl:// hook 
[   0.328][v][ytdl_hook] not a ytdl:// url 
[   0.328][d][osc] osc_init 
[   0.329][v][ifo] Opening .\Spears_Munsil_Quantazation_Test_2160p.mp4
[   0.330][v][ifo_dvdnav] Opening .\Spears_Munsil_Quantazation_Test_2160p.mp4
[   0.330][d][cplayer] Run command: disable-section, flags=64, args=[input]
[   0.330][v][bdmv/bluray] Opening .\Spears_Munsil_Quantazation_Test_2160p.mp4
[   0.331][v][file] Opening .\Spears_Munsil_Quantazation_Test_2160p.mp4
[   0.331][d][file] Stream opened successfully.
[   0.331][v][demux] Trying demuxers for level=normal.
[   0.331][d][demux] Trying demuxer: disc (force-level: normal)
[   0.331][d][demux] Trying demuxer: edl (force-level: normal)
[   0.331][d][demux] Trying demuxer: cue (force-level: normal)
[   0.331][d][demux] Trying demuxer: rawaudio (force-level: normal)
[   0.331][d][demux] Trying demuxer: rawvideo (force-level: normal)
[   0.331][d][demux] Trying demuxer: mkv (force-level: normal)
[   0.332][d][demux] Trying demuxer: libarchive (force-level: normal)
[   0.332][d][demux] Trying demuxer: rar (force-level: normal)
[   0.332][d][demux] Trying demuxer: lavf (force-level: normal)
[   0.335][v][osd/libass] Shaper: FriBidi 1.0.5 (SIMPLE) HarfBuzz-ng 2.5.3 (COMPLEX)
[   0.335][v][osd/libass] Setting up fonts...
[   0.337][v][lavf] Found 'mov,mp4,m4a,3gp,3g2,mj2' at score=100 size=2048.
[   0.341][v][demux] Detected file format: mov,mp4,m4a,3gp,3g2,mj2 (libavformat)
[   0.341][v][cplayer] Opening done: .\Spears_Munsil_Quantazation_Test_2160p.mp4
[   0.342][v][find_files] Loading external files in .\
[   0.345][v][cplayer] Running hook: ytdl_hook/on_preloaded
[   0.345][v][lavf] select track 0
[   0.345][v][lavf] select track 1
[   0.347][i][cplayer]  (+) Video --vid=1 (*) (hevc 3840x2160 23.976fps)
[   0.349][i][cplayer]  (+) Audio --aid=1 (*) (aac 2ch 44100Hz)
[   0.350][v][vo/gpu] Probing for best GPU context.
[   0.350][v][vo/gpu/vulkan] Initializing GPU context 'winvk'
[   0.369][v][osd/libass] Using font provider directwrite
[   0.369][v][osd/libass] Done.
[   0.373][v][vo/gpu/vulkan/libplacebo] Creating vulkan instance with extensions:
[   0.373][v][vo/gpu/vulkan/libplacebo]     VK_KHR_get_physical_device_properties2
[   0.373][v][vo/gpu/vulkan/libplacebo]     VK_EXT_swapchain_colorspace
[   0.373][v][vo/gpu/vulkan/libplacebo]     VK_KHR_external_memory_capabilities
[   0.373][v][vo/gpu/vulkan/libplacebo]     VK_KHR_external_semaphore_capabilities
[   0.373][v][vo/gpu/vulkan/libplacebo]     VK_KHR_surface
[   0.373][v][vo/gpu/vulkan/libplacebo]     VK_KHR_win32_surface
[   0.423][v][vo/gpu/vulkan/libplacebo] Probing for vulkan devices:
[   0.423][v][vo/gpu/vulkan/libplacebo]     GPU 0: AMD Radeon RX 5700 XT (discrete)
[   0.423][v][vo/gpu/vulkan/libplacebo] Vulkan device properties:
[   0.423][v][vo/gpu/vulkan/libplacebo]     Device Name: AMD Radeon RX 5700 XT
[   0.423][v][vo/gpu/vulkan/libplacebo]     Device ID: 1002:731f
[   0.423][v][vo/gpu/vulkan/libplacebo]     Driver version: 8388707
[   0.423][v][vo/gpu/vulkan/libplacebo]     API version: 1.1.113
[   0.423][v][vo/gpu/vulkan/libplacebo] Queue families supported by device:
[   0.423][v][vo/gpu/vulkan/libplacebo]     QF 0: flags 0xf num 1
[   0.423][v][vo/gpu/vulkan/libplacebo]     QF 1: flags 0xe num 2
[   0.423][v][vo/gpu/vulkan/libplacebo]     QF 2: flags 0xc num 2
[   0.423][v][vo/gpu/vulkan/libplacebo] Using graphics queue (QF 0)
[   0.423][v][vo/gpu/vulkan/libplacebo] Using async transfer (QF 2)
[   0.423][v][vo/gpu/vulkan/libplacebo] Using async compute (QF 1)
[   0.424][v][vo/gpu/vulkan/libplacebo] Creating vulkan device with extensions:
[   0.424][v][vo/gpu/vulkan/libplacebo]     VK_KHR_swapchain
[   0.424][v][vo/gpu/vulkan/libplacebo]     VK_KHR_external_memory
[   0.424][v][vo/gpu/vulkan/libplacebo]     VK_KHR_external_memory_win32
[   0.424][v][vo/gpu/vulkan/libplacebo]     VK_KHR_external_semaphore
[   0.424][v][vo/gpu/vulkan/libplacebo]     VK_KHR_external_semaphore_win32
[   0.437][v][vo/gpu/vulkan/libplacebo] Initializing SPIR-V compiler 'shaderc'
[   0.437][v][vo/gpu/vulkan/libplacebo] Memory heaps supported by device:
[   0.437][v][vo/gpu/vulkan/libplacebo]     heap 0: flags 0x3 size 8304721920
[   0.437][v][vo/gpu/vulkan/libplacebo]     heap 1: flags 0x0 size 8295284736
[   0.437][v][vo/gpu/vulkan/libplacebo]     heap 2: flags 0x3 size 268435456
[   0.437][v][vo/gpu/vulkan/libplacebo] Memory types supported by device:
[   0.437][v][vo/gpu/vulkan/libplacebo]     type 0: flags 0x1 heap 0
[   0.437][v][vo/gpu/vulkan/libplacebo]     type 1: flags 0x6 heap 1
[   0.437][v][vo/gpu/vulkan/libplacebo]     type 2: flags 0x7 heap 2
[   0.437][v][vo/gpu/vulkan/libplacebo]     type 3: flags 0xe heap 1
[   0.437][w][vo/gpu/vulkan/libplacebo] Storable format 'rgb32f' has no matching GLSL format qualifier?
[   0.438][w][vo/gpu/vulkan/libplacebo] Storable format 'rgb32u' has no matching GLSL format qualifier?
[   0.438][w][vo/gpu/vulkan/libplacebo] Storable format 'rgb32i' has no matching GLSL format qualifier?
[   0.438][w][vo/gpu/vulkan/libplacebo] Storable format 'bgra4' has no matching GLSL format qualifier?
[   0.439][w][vo/gpu/vulkan/libplacebo] Storable format 'bgr565' has no matching GLSL format qualifier?
[   0.439][w][vo/gpu/vulkan/libplacebo] Storable format 'bgr5a1' has no matching GLSL format qualifier?
[   0.440][w][vo/gpu/vulkan/libplacebo] Storable format 'a1rgb5' has no matching GLSL format qualifier?
[   0.440][w][vo/gpu/vulkan/libplacebo] Storable format 'rgba4' has no matching GLSL format qualifier?
[   0.441][w][vo/gpu/vulkan/libplacebo] Storable format 'rgb565' has no matching GLSL format qualifier?
[   0.441][w][vo/gpu/vulkan/libplacebo] Storable format 'rgb5a1' has no matching GLSL format qualifier?
[   0.441][d][vo/gpu/vulkan/libplacebo] Minimum texel alignment: 96
[   0.441][v][vo/gpu/vulkan/libplacebo] GPU information:
[   0.441][v][vo/gpu/vulkan/libplacebo]     GLSL version: 450 (vulkan)
[   0.441][v][vo/gpu/vulkan/libplacebo]     Capabilities: 0x1
[   0.441][v][vo/gpu/vulkan/libplacebo]     Limits:
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_tex_1d_dim:            16384
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_tex_2d_dim:            16384
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_tex_3d_dim:            2048
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_pushc_size:            128
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_xfer_size:             18446744073709551615
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_ubo_size:              4294967295
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_ssbo_size:             4294967295
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_buffer_texels:         4294967295
[   0.441][v][vo/gpu/vulkan/libplacebo]       min_gather_offset:         -32
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_gather_offset:         31
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_shmem_size:            32768
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_group_threads:         1024
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_group_size[0]:         1024
[   0.441][v][vo/gpu/vulkan/libplacebo]       max_group_size[1]:         1024
[   0.462][v][vo/gpu/vulkan/libplacebo]       max_group_size[2]:         1024
[   0.462][v][vo/gpu/vulkan/libplacebo]       max_dispatch[0]:           65535
[   0.462][v][vo/gpu/vulkan/libplacebo]       max_dispatch[1]:           65535
[   0.462][v][vo/gpu/vulkan/libplacebo]       max_dispatch[2]:           65535
[   0.462][v][vo/gpu/vulkan/libplacebo]       align_tex_xfer_stride:     1
[   0.462][v][vo/gpu/vulkan/libplacebo]       align_tex_xfer_offset:     4
[   0.462][v][vo/gpu/vulkan/libplacebo]     External API interop:
[   0.462][v][vo/gpu/vulkan/libplacebo]       UUID: 03:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
[   0.462][v][vo/gpu/vulkan/libplacebo]       buf export caps: 0x0
[   0.462][v][vo/gpu/vulkan/libplacebo]       buf import caps: 0x0
[   0.462][v][vo/gpu/vulkan/libplacebo]       tex export caps: 0x0
[   0.462][v][vo/gpu/vulkan/libplacebo]       tex import caps: 0x0
[   0.462][v][vo/gpu/vulkan/libplacebo]       sync export caps: 0x6
[   0.462][v][vo/gpu/vulkan/libplacebo]       sync import caps: 0x0
[   0.462][d][vo/gpu/vulkan/libplacebo] GPU texture formats:
[   0.462][d][vo/gpu/vulkan/libplacebo]     NAME       TYPE   CAPS   SIZE COMP DEPTH         BITS          GLSL_TYPE  GLSL_FMT  
[   0.462][d][vo/gpu/vulkan/libplacebo]     a2rgb10    UNORM  0x1ff  4    ARGB {2  10 10 10} {2  10 10 10} vec4       rgb10_a2  
[   0.462][d][vo/gpu/vulkan/libplacebo]     a2bgr10    UNORM  0x1ff  4    ABGR {2  10 10 10} {2  10 10 10} vec4       rgb10_a2  
[   0.462][d][vo/gpu/vulkan/libplacebo]     r8         UNORM  0x1ff  1    R    {8  0  0  0 } {8  0  0  0 } float      r8        
[   0.462][d][vo/gpu/vulkan/libplacebo]     r8s        SNORM  0x1ff  1    R    {8  0  0  0 } {8  0  0  0 } float      r8_snorm  
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg8        UNORM  0x1ff  2    RG   {8  8  0  0 } {8  8  0  0 } vec2       rg8       
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg8s       SNORM  0x1ff  2    RG   {8  8  0  0 } {8  8  0  0 } vec2       rg8_snorm 
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba8      UNORM  0x1ff  4    RGBA {8  8  8  8 } {8  8  8  8 } vec4       rgba8     
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba8s     SNORM  0x1ff  4    RGBA {8  8  8  8 } {8  8  8  8 } vec4       rgba8_snorm
[   0.462][d][vo/gpu/vulkan/libplacebo]     bgra8      UNORM  0x1ff  4    BGRA {8  8  8  8 } {8  8  8  8 } vec4       rgba8     
[   0.462][d][vo/gpu/vulkan/libplacebo]     abgr8      UNORM  0x1ff  4    ABGR {8  8  8  8 } {8  8  8  8 } vec4       rgba8     
[   0.462][d][vo/gpu/vulkan/libplacebo]     abgr8s     SNORM  0x1ff  4    ABGR {8  8  8  8 } {8  8  8  8 } vec4       rgba8_snorm
[   0.462][d][vo/gpu/vulkan/libplacebo]     r16        UNORM  0x1ff  2    R    {16 0  0  0 } {16 0  0  0 } float      r16       
[   0.462][d][vo/gpu/vulkan/libplacebo]     r16hf      FLOAT  0x1ff  2    R    {16 0  0  0 } {16 0  0  0 } float      r16f      
[   0.462][d][vo/gpu/vulkan/libplacebo]     r16s       SNORM  0x1ff  2    R    {16 0  0  0 } {16 0  0  0 } float      r16_snorm 
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg16       UNORM  0x1ff  4    RG   {16 16 0  0 } {16 16 0  0 } vec2       rg16      
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg16hf     FLOAT  0x1ff  4    RG   {16 16 0  0 } {16 16 0  0 } vec2       rg16f     
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg16s      SNORM  0x1ff  4    RG   {16 16 0  0 } {16 16 0  0 } vec2       rg16_snorm
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba16     UNORM  0x1ff  8    RGBA {16 16 16 16} {16 16 16 16} vec4       rgba16    
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba16hf   FLOAT  0x1ff  8    RGBA {16 16 16 16} {16 16 16 16} vec4       rgba16f   
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba16s    SNORM  0x1ff  8    RGBA {16 16 16 16} {16 16 16 16} vec4       rgba16_snorm
[   0.462][d][vo/gpu/vulkan/libplacebo]     r32f       FLOAT  0x1ff  4    R    {32 0  0  0 } {32 0  0  0 } float      r32f      
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg32f      FLOAT  0x1ff  8    RG   {32 32 0  0 } {32 32 0  0 } vec2       rg32f     
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba32f    FLOAT  0x1ff  16   RGBA {32 32 32 32} {32 32 32 32} vec4       rgba32f   
[   0.462][d][vo/gpu/vulkan/libplacebo]     a2rgb10u   UINT   0x1eb  4    ARGB {2  10 10 10} {2  10 10 10} uvec4      rgb10_a2ui
[   0.462][d][vo/gpu/vulkan/libplacebo]     a2bgr10u   UINT   0x1eb  4    ABGR {2  10 10 10} {2  10 10 10} uvec4      rgb10_a2ui
[   0.462][d][vo/gpu/vulkan/libplacebo]     r8i        SINT   0x1eb  1    R    {8  0  0  0 } {8  0  0  0 } int        r8i       
[   0.462][d][vo/gpu/vulkan/libplacebo]     r8u        UINT   0x1eb  1    R    {8  0  0  0 } {8  0  0  0 } uint       r8ui      
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg8i       SINT   0x1eb  2    RG   {8  8  0  0 } {8  8  0  0 } ivec2      rg8i      
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg8u       UINT   0x1eb  2    RG   {8  8  0  0 } {8  8  0  0 } uvec2      rg8ui     
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba8i     SINT   0x1eb  4    RGBA {8  8  8  8 } {8  8  8  8 } ivec4      rgba8i    
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba8u     UINT   0x1eb  4    RGBA {8  8  8  8 } {8  8  8  8 } uvec4      rgba8ui   
[   0.462][d][vo/gpu/vulkan/libplacebo]     bgra8i     SINT   0x1eb  4    BGRA {8  8  8  8 } {8  8  8  8 } ivec4      rgba8i    
[   0.462][d][vo/gpu/vulkan/libplacebo]     bgra8u     UINT   0x1eb  4    BGRA {8  8  8  8 } {8  8  8  8 } uvec4      rgba8ui   
[   0.462][d][vo/gpu/vulkan/libplacebo]     abgr8i     SINT   0x1eb  4    ABGR {8  8  8  8 } {8  8  8  8 } ivec4      rgba8i    
[   0.462][d][vo/gpu/vulkan/libplacebo]     abgr8u     UINT   0x1eb  4    ABGR {8  8  8  8 } {8  8  8  8 } uvec4      rgba8ui   
[   0.462][d][vo/gpu/vulkan/libplacebo]     r16i       SINT   0x1eb  2    R    {16 0  0  0 } {16 0  0  0 } int        r16i      
[   0.462][d][vo/gpu/vulkan/libplacebo]     r16u       UINT   0x1eb  2    R    {16 0  0  0 } {16 0  0  0 } uint       r16ui     
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg16i      SINT   0x1eb  4    RG   {16 16 0  0 } {16 16 0  0 } ivec2      rg16i     
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg16u      UINT   0x1eb  4    RG   {16 16 0  0 } {16 16 0  0 } uvec2      rg16ui    
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba16i    SINT   0x1eb  8    RGBA {16 16 16 16} {16 16 16 16} ivec4      rgba16i   
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba16u    UINT   0x1eb  8    RGBA {16 16 16 16} {16 16 16 16} uvec4      rgba16ui  
[   0.462][d][vo/gpu/vulkan/libplacebo]     r32i       SINT   0x1eb  4    R    {32 0  0  0 } {32 0  0  0 } int        r32i      
[   0.462][d][vo/gpu/vulkan/libplacebo]     r32u       UINT   0x1eb  4    R    {32 0  0  0 } {32 0  0  0 } uint       r32ui     
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg32i      SINT   0x1eb  8    RG   {32 32 0  0 } {32 32 0  0 } ivec2      rg32i     
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg32u      UINT   0x1eb  8    RG   {32 32 0  0 } {32 32 0  0 } uvec2      rg32ui    
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba32i    SINT   0x1eb  16   RGBA {32 32 32 32} {32 32 32 32} ivec4      rgba32i   
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba32u    UINT   0x1eb  16   RGBA {32 32 32 32} {32 32 32 32} uvec4      rgba32ui  
[   0.462][d][vo/gpu/vulkan/libplacebo]     a1rgb5     UNORM  0x3d   2    ARGB {1  5  5  5 } {1  5  5  5 }                      
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgba4      UNORM  0x3d   2    RGBA {4  4  4  4 } {4  4  4  4 }                      
[   0.462][d][vo/gpu/vulkan/libplacebo]     bgra4      UNORM  0x3d   2    BGRA {4  4  4  4 } {4  4  4  4 }                      
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgb5a1     UNORM  0x3d   2    RGBA {5  5  5  1 } {5  5  5  1 }                      
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgb565     UNORM  0x3d   2    RGB  {5  6  5  0 } {5  6  5  0 }                      
[   0.462][d][vo/gpu/vulkan/libplacebo]     bgr5a1     UNORM  0x3d   2    BGRA {5  5  5  1 } {5  5  5  1 }                      
[   0.462][d][vo/gpu/vulkan/libplacebo]     bgr565     UNORM  0x3d   2    BGR  {5  6  5  0 } {5  6  5  0 }                      
[   0.462][d][vo/gpu/vulkan/libplacebo]     rg4        UNORM  0x5    1    RG   {4  4  0  0 } {4  4  0  0 }                      
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgb32f     FLOAT  0xc0   12   RGB  {32 32 32 0 } {32 32 32 0 } vec3                 
[   0.462][d][vo/gpu/vulkan/libplacebo]     rgb32i     SINT   0xc0   12   RGB  {32 32 32 0 } {32 32 32 0 } ivec3                
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb32u     UINT   0xc0   12   RGB  {32 32 32 0 } {32 32 32 0 } uvec3                
[   0.463][d][vo/gpu/vulkan/libplacebo]     a2rgb10i   SINT   0x40   4    ARGB {2  10 10 10} {2  10 10 10} ivec4                
[   0.463][d][vo/gpu/vulkan/libplacebo]     a2rgb10s   SNORM  0x40   4    ARGB {2  10 10 10} {2  10 10 10} vec4                 
[   0.463][d][vo/gpu/vulkan/libplacebo]     a2bgr10i   SINT   0x40   4    ABGR {2  10 10 10} {2  10 10 10} ivec4                
[   0.463][d][vo/gpu/vulkan/libplacebo]     a2bgr10s   SNORM  0x40   4    ABGR {2  10 10 10} {2  10 10 10} vec4                 
[   0.463][d][vo/gpu/vulkan/libplacebo]     r64df      FLOAT  0x40   8    R    {64 0  0  0 } {64 0  0  0 } float                
[   0.463][d][vo/gpu/vulkan/libplacebo]     r64i       SINT   0x40   8    R    {64 0  0  0 } {64 0  0  0 } int                  
[   0.463][d][vo/gpu/vulkan/libplacebo]     r64u       UINT   0x40   8    R    {64 0  0  0 } {64 0  0  0 } uint                 
[   0.463][d][vo/gpu/vulkan/libplacebo]     rg64df     FLOAT  0x40   16   RG   {64 64 0  0 } {64 64 0  0 } vec2                 
[   0.463][d][vo/gpu/vulkan/libplacebo]     rg64i      SINT   0x40   16   RG   {64 64 0  0 } {64 64 0  0 } ivec2                
[   0.463][d][vo/gpu/vulkan/libplacebo]     rg64u      UINT   0x40   16   RG   {64 64 0  0 } {64 64 0  0 } uvec2                
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb64df    FLOAT  0x40   24   RGB  {64 64 64 0 } {64 64 64 0 } vec3                 
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb64i     SINT   0x40   24   RGB  {64 64 64 0 } {64 64 64 0 } ivec3                
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb64u     UINT   0x40   24   RGB  {64 64 64 0 } {64 64 64 0 } uvec3                
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgba64df   FLOAT  0x40   32   RGBA {64 64 64 64} {64 64 64 64} vec4                 
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgba64i    SINT   0x40   32   RGBA {64 64 64 64} {64 64 64 64} ivec4                
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgba64u    UINT   0x40   32   RGBA {64 64 64 64} {64 64 64 64} uvec4                
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb8i      SINT   0x0    3    RGB  {8  8  8  0 } {8  8  8  0 }                      
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb8s      SNORM  0x0    3    RGB  {8  8  8  0 } {8  8  8  0 }                      
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb8u      UINT   0x0    3    RGB  {8  8  8  0 } {8  8  8  0 }                      
[   0.463][d][vo/gpu/vulkan/libplacebo]     bgr8       UNORM  0x0    3    BGR  {8  8  8  0 } {8  8  8  0 }                      
[   0.463][d][vo/gpu/vulkan/libplacebo]     bgr8i      SINT   0x0    3    BGR  {8  8  8  0 } {8  8  8  0 }                      
[   0.463][d][vo/gpu/vulkan/libplacebo]     bgr8u      UINT   0x0    3    BGR  {8  8  8  0 } {8  8  8  0 }                      
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb16hf    FLOAT  0x0    6    RGB  {16 16 16 0 } {16 16 16 0 }                      
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb16i     SINT   0x0    6    RGB  {16 16 16 0 } {16 16 16 0 }                      
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb16s     SNORM  0x0    6    RGB  {16 16 16 0 } {16 16 16 0 }                      
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb16u     UINT   0x0    6    RGB  {16 16 16 0 } {16 16 16 0 }                      
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb8       UNORM  0x3f   3    RGB  {8  8  8  0 } {8  8  8  0 }            rgba8     
[   0.463][d][vo/gpu/vulkan/libplacebo]     rgb16      UNORM  0x3f   6    RGB  {16 16 16 0 } {16 16 16 0 }            rgba16    
[   0.463][d][vo/gpu/vulkan] Texture formats:
[   0.463][d][vo/gpu/vulkan]   NAME       COMP*TYPE SIZE        DEPTH PER COMP.
[   0.463][d][vo/gpu/vulkan]   a2rgb10    4*unorm   4B    LF CR {2 10 10 10}
[   0.463][d][vo/gpu/vulkan]   a2bgr10    4*unorm   4B    LF CR {2 10 10 10}
[   0.463][d][vo/gpu/vulkan]   r8         1*unorm   1B    LF CR {8}
[   0.463][d][vo/gpu/vulkan]   rg8        2*unorm   2B    LF CR {8 8}
[   0.463][d][vo/gpu/vulkan]   rgba8      4*unorm   4B    LF CR {8 8 8 8}
[   0.463][d][vo/gpu/vulkan]   bgra8      4*unorm   4B    LF CR {8 8 8 8}
[   0.463][d][vo/gpu/vulkan]   abgr8      4*unorm   4B    LF CR {8 8 8 8}
[   0.463][d][vo/gpu/vulkan]   r16        1*unorm   2B    LF CR {16}
[   0.463][d][vo/gpu/vulkan]   r16hf      1*float   2B    LF CR {16}
[   0.463][d][vo/gpu/vulkan]   rg16       2*unorm   4B    LF CR {16 16}
[   0.463][d][vo/gpu/vulkan]   rg16hf     2*float   4B    LF CR {16 16}
[   0.463][d][vo/gpu/vulkan]   rgba16     4*unorm   8B    LF CR {16 16 16 16}
[   0.463][d][vo/gpu/vulkan]   rgba16hf   4*float   8B    LF CR {16 16 16 16}
[   0.463][d][vo/gpu/vulkan]   r32f       1*float   4B    LF CR {32}
[   0.463][d][vo/gpu/vulkan]   rg32f      2*float   8B    LF CR {32 32}
[   0.463][d][vo/gpu/vulkan]   rgba32f    4*float  16B    LF CR {32 32 32 32}
[   0.463][d][vo/gpu/vulkan]   a2rgb10u   4*uint    4B       CR {2 10 10 10}
[   0.463][d][vo/gpu/vulkan]   a2bgr10u   4*uint    4B       CR {2 10 10 10}
[   0.463][d][vo/gpu/vulkan]   r8u        1*uint    1B       CR {8}
[   0.463][d][vo/gpu/vulkan]   rg8u       2*uint    2B       CR {8 8}
[   0.463][d][vo/gpu/vulkan]   rgba8u     4*uint    4B       CR {8 8 8 8}
[   0.463][d][vo/gpu/vulkan]   bgra8u     4*uint    4B       CR {8 8 8 8}
[   0.463][d][vo/gpu/vulkan]   abgr8u     4*uint    4B       CR {8 8 8 8}
[   0.463][d][vo/gpu/vulkan]   r16u       1*uint    2B       CR {16}
[   0.463][d][vo/gpu/vulkan]   rg16u      2*uint    4B       CR {16 16}
[   0.463][d][vo/gpu/vulkan]   rgba16u    4*uint    8B       CR {16 16 16 16}
[   0.463][d][vo/gpu/vulkan]   r32u       1*uint    4B       CR {32}
[   0.463][d][vo/gpu/vulkan]   rg32u      2*uint    8B       CR {32 32}
[   0.463][d][vo/gpu/vulkan]   rgba32u    4*uint   16B       CR {32 32 32 32}
[   0.463][d][vo/gpu/vulkan]   a1rgb5     4*unorm   2B    LF CR {1 5 5 5}
[   0.463][d][vo/gpu/vulkan]   rgba4      4*unorm   2B    LF CR {4 4 4 4}
[   0.463][d][vo/gpu/vulkan]   bgra4      4*unorm   2B    LF CR {4 4 4 4}
[   0.463][d][vo/gpu/vulkan]   rgb5a1     4*unorm   2B    LF CR {5 5 5 1}
[   0.463][d][vo/gpu/vulkan]   rgb565     3*unorm   2B    LF CR {5 6 5}
[   0.463][d][vo/gpu/vulkan]   bgr5a1     4*unorm   2B    LF CR {5 5 5 1}
[   0.464][d][vo/gpu/vulkan]   bgr565     3*unorm   2B    LF CR {5 6 5}
[   0.464][d][vo/gpu/vulkan]   rg4        2*unorm   1B    LF    {4 4}
[   0.464][d][vo/gpu/vulkan]   rgb8       3*unorm   3B    LF CR {8 8 8}
[   0.464][d][vo/gpu/vulkan]   rgb16      3*unorm   6B    LF CR {16 16 16}
[   0.464][d][vo/gpu/vulkan]  LA = LUMINANCE_ALPHA hack format
[   0.464][d][vo/gpu/vulkan]  LF = linear filterable
[   0.464][d][vo/gpu/vulkan]  CR = can be used for render targets
[   0.464][d][vo/gpu/vulkan] Image formats:
[   0.464][d][vo/gpu/vulkan]   yuv444p => 3 planes 1x1 8/0 [r8/r8/r8] (r/g/b)
[   0.464][d][vo/gpu/vulkan]   yuv420p => 3 planes 2x2 8/0 [r8/r8/r8] (r/g/b)
[   0.464][d][vo/gpu/vulkan]   gray => 1 planes 1x1 8/0 [r8] (r)
[   0.464][d][vo/gpu/vulkan]   gray16 => 1 planes 1x1 16/0 [r16] (r)
[   0.464][d][vo/gpu/vulkan]   uyvy422
[   0.464][d][vo/gpu/vulkan]   nv12 => 2 planes 2x2 8/0 [r8/rg8] (r/gb)
[   0.464][d][vo/gpu/vulkan]   p010 => 2 planes 2x2 16/6 [r16/rg16] (r/gb)
[   0.464][d][vo/gpu/vulkan]   nv24 => 2 planes 1x1 8/0 [r8/rg8] (r/gb)
[   0.464][d][vo/gpu/vulkan]   argb => 1 planes 1x1 8/0 [rgba8] (argb)
[   0.464][d][vo/gpu/vulkan]   bgra => 1 planes 1x1 8/0 [rgba8] (bgra)
[   0.464][d][vo/gpu/vulkan]   abgr => 1 planes 1x1 8/0 [rgba8] (abgr)
[   0.464][d][vo/gpu/vulkan]   rgba => 1 planes 1x1 8/0 [rgba8] (rgba)
[   0.475][d][vo/gpu/vulkan]   bgr24 => 1 planes 1x1 8/0 [rgb8] (bgr)
[   0.475][d][vo/gpu/vulkan]   rgb24 => 1 planes 1x1 8/0 [rgb8] (rgb)
[   0.475][d][vo/gpu/vulkan]   0rgb => 1 planes 1x1 8/0 [rgba8] (_rgb)
[   0.475][d][vo/gpu/vulkan]   bgr0 => 1 planes 1x1 8/0 [rgba8] (bgr)
[   0.475][d][vo/gpu/vulkan]   0bgr => 1 planes 1x1 8/0 [rgba8] (_bgr)
[   0.475][d][vo/gpu/vulkan]   rgb0 => 1 planes 1x1 8/0 [rgba8] (rgb)
[   0.475][d][vo/gpu/vulkan]   rgba64 => 1 planes 1x1 16/0 [rgba16] (rgba)
[   0.475][d][vo/gpu/vulkan]   rgb565
[   0.475][d][vo/gpu/vulkan]   vdpau
[   0.475][d][vo/gpu/vulkan]   vdpau_output
[   0.475][d][vo/gpu/vulkan]   vaapi
[   0.475][d][vo/gpu/vulkan]   d3d11
[   0.475][d][vo/gpu/vulkan]   dxva2_vld
[   0.475][d][vo/gpu/vulkan]   mmal
[   0.475][d][vo/gpu/vulkan]   videotoolbox
[   0.475][d][vo/gpu/vulkan]   drm_prime
[   0.475][d][vo/gpu/vulkan]   cuda
[   0.475][d][vo/gpu/vulkan]   yuyv422
[   0.475][d][vo/gpu/vulkan]   yuv422p => 3 planes 2x1 8/0 [r8/r8/r8] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   yuv410p => 3 planes 4x4 8/0 [r8/r8/r8] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   yuv411p => 3 planes 4x1 8/0 [r8/r8/r8] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   monow
[   0.475][d][vo/gpu/vulkan]   monob
[   0.475][d][vo/gpu/vulkan]   pal8
[   0.475][d][vo/gpu/vulkan]   yuvj422p => 3 planes 2x1 8/0 [r8/r8/r8] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   uyyvyy411
[   0.475][d][vo/gpu/vulkan]   bgr8
[   0.475][d][vo/gpu/vulkan]   bgr4
[   0.475][d][vo/gpu/vulkan]   bgr4_byte
[   0.475][d][vo/gpu/vulkan]   rgb8
[   0.475][d][vo/gpu/vulkan]   rgb4
[   0.475][d][vo/gpu/vulkan]   rgb4_byte
[   0.475][d][vo/gpu/vulkan]   nv21 => 2 planes 2x2 8/0 [r8/rg8] (r/bg)
[   0.475][d][vo/gpu/vulkan]   gray16be
[   0.475][d][vo/gpu/vulkan]   yuv440p => 3 planes 1x2 8/0 [r8/r8/r8] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   yuvj440p => 3 planes 1x2 8/0 [r8/r8/r8] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   yuva420p => 4 planes 2x2 8/0 [r8/r8/r8/r8] (r/g/b/a)
[   0.475][d][vo/gpu/vulkan]   rgb48be
[   0.475][d][vo/gpu/vulkan]   rgb48 => 1 planes 1x1 16/0 [rgb16] (rgb)
[   0.475][d][vo/gpu/vulkan]   rgb565be
[   0.475][d][vo/gpu/vulkan]   rgb555be
[   0.475][d][vo/gpu/vulkan]   rgb555
[   0.475][d][vo/gpu/vulkan]   bgr565be
[   0.475][d][vo/gpu/vulkan]   bgr565
[   0.475][d][vo/gpu/vulkan]   bgr555be
[   0.475][d][vo/gpu/vulkan]   bgr555
[   0.475][d][vo/gpu/vulkan]   vaapi_moco
[   0.475][d][vo/gpu/vulkan]   vaapi_idct
[   0.475][d][vo/gpu/vulkan]   yuv420p16 => 3 planes 2x2 16/0 [r16/r16/r16] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   yuv420p16be
[   0.475][d][vo/gpu/vulkan]   yuv422p16 => 3 planes 2x1 16/0 [r16/r16/r16] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   yuv422p16be
[   0.475][d][vo/gpu/vulkan]   yuv444p16 => 3 planes 1x1 16/0 [r16/r16/r16] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   yuv444p16be
[   0.475][d][vo/gpu/vulkan]   rgb444
[   0.475][d][vo/gpu/vulkan]   rgb444be
[   0.475][d][vo/gpu/vulkan]   bgr444
[   0.475][d][vo/gpu/vulkan]   bgr444be
[   0.475][d][vo/gpu/vulkan]   ya8 => 1 planes 1x1 8/0 [rg8] (ra)
[   0.475][d][vo/gpu/vulkan]   bgr48be
[   0.475][d][vo/gpu/vulkan]   bgr48 => 1 planes 1x1 16/0 [rgb16] (bgr)
[   0.475][d][vo/gpu/vulkan]   yuv420p9be
[   0.475][d][vo/gpu/vulkan]   yuv420p9 => 3 planes 2x2 16/-7 [r16/r16/r16] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   yuv420p10be
[   0.475][d][vo/gpu/vulkan]   yuv420p10 => 3 planes 2x2 16/-6 [r16/r16/r16] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   yuv422p10be
[   0.475][d][vo/gpu/vulkan]   yuv422p10 => 3 planes 2x1 16/-6 [r16/r16/r16] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   yuv444p9be
[   0.475][d][vo/gpu/vulkan]   yuv444p9 => 3 planes 1x1 16/-7 [r16/r16/r16] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   yuv444p10be
[   0.475][d][vo/gpu/vulkan]   yuv444p10 => 3 planes 1x1 16/-6 [r16/r16/r16] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   yuv422p9be
[   0.475][d][vo/gpu/vulkan]   yuv422p9 => 3 planes 2x1 16/-7 [r16/r16/r16] (r/g/b)
[   0.475][d][vo/gpu/vulkan]   gbrp => 3 planes 1x1 8/0 [r8/r8/r8] (g/b/r)
[   0.475][d][vo/gpu/vulkan]   gbrp9be
[   0.475][d][vo/gpu/vulkan]   gbrp9 => 3 planes 1x1 16/-7 [r16/r16/r16] (g/b/r)
[   0.475][d][vo/gpu/vulkan]   gbrp10be
[   0.475][d][vo/gpu/vulkan]   gbrp10 => 3 planes 1x1 16/-6 [r16/r16/r16] (g/b/r)
[   0.475][d][vo/gpu/vulkan]   gbrp16be
[   0.475][d][vo/gpu/vulkan]   gbrp16 => 3 planes 1x1 16/0 [r16/r16/r16] (g/b/r)
[   0.475][d][vo/gpu/vulkan]   yuva422p => 4 planes 2x1 8/0 [r8/r8/r8/r8] (r/g/b/a)
[   0.475][d][vo/gpu/vulkan]   yuva444p => 4 planes 1x1 8/0 [r8/r8/r8/r8] (r/g/b/a)
[   0.475][d][vo/gpu/vulkan]   yuva420p9be
[   0.475][d][vo/gpu/vulkan]   yuva420p9 => 4 planes 2x2 16/-7 [r16/r16/r16/r16] (r/g/b/a)
[   0.475][d][vo/gpu/vulkan]   yuva422p9be
[   0.475][d][vo/gpu/vulkan]   yuva422p9 => 4 planes 2x1 16/-7 [r16/r16/r16/r16] (r/g/b/a)
[   0.475][d][vo/gpu/vulkan]   yuva444p9be
[   0.475][d][vo/gpu/vulkan]   yuva444p9 => 4 planes 1x1 16/-7 [r16/r16/r16/r16] (r/g/b/a)
[   0.475][d][vo/gpu/vulkan]   yuva420p10be
[   0.475][d][vo/gpu/vulkan]   yuva420p10 => 4 planes 2x2 16/-6 [r16/r16/r16/r16] (r/g/b/a)
[   0.476][d][vo/gpu/vulkan]   yuva422p10be
[   0.476][d][vo/gpu/vulkan]   yuva422p10 => 4 planes 2x1 16/-6 [r16/r16/r16/r16] (r/g/b/a)
[   0.476][d][vo/gpu/vulkan]   yuva444p10be
[   0.476][d][vo/gpu/vulkan]   yuva444p10 => 4 planes 1x1 16/-6 [r16/r16/r16/r16] (r/g/b/a)
[   0.476][d][vo/gpu/vulkan]   yuva420p16be
[   0.476][d][vo/gpu/vulkan]   yuva420p16 => 4 planes 2x2 16/0 [r16/r16/r16/r16] (r/g/b/a)
[   0.476][d][vo/gpu/vulkan]   yuva422p16be
[   0.476][d][vo/gpu/vulkan]   yuva422p16 => 4 planes 2x1 16/0 [r16/r16/r16/r16] (r/g/b/a)
[   0.476][d][vo/gpu/vulkan]   yuva444p16be
[   0.476][d][vo/gpu/vulkan]   yuva444p16 => 4 planes 1x1 16/0 [r16/r16/r16/r16] (r/g/b/a)
[   0.476][d][vo/gpu/vulkan]   xyz12 => 1 planes 1x1 16/4 [rgb16] (rgb)
[   0.476][d][vo/gpu/vulkan]   xyz12be
[   0.476][d][vo/gpu/vulkan]   nv16 => 2 planes 2x1 8/0 [r8/rg8] (r/gb)
[   0.476][d][vo/gpu/vulkan]   nv20 => 2 planes 2x1 16/-6 [r16/rg16] (r/gb)
[   0.476][d][vo/gpu/vulkan]   nv20be
[   0.476][d][vo/gpu/vulkan]   rgba64be
[   0.476][d][vo/gpu/vulkan]   bgra64be
[   0.476][d][vo/gpu/vulkan]   bgra64 => 1 planes 1x1 16/0 [rgba16] (bgra)
[   0.476][d][vo/gpu/vulkan]   yvyu422
[   0.476][d][vo/gpu/vulkan]   ya16be
[   0.476][d][vo/gpu/vulkan]   ya16 => 1 planes 1x1 16/0 [rg16] (ra)
[   0.476][d][vo/gpu/vulkan]   gbrap => 4 planes 1x1 8/0 [r8/r8/r8/r8] (g/b/r/a)
[   0.476][d][vo/gpu/vulkan]   gbrap16be
[   0.476][d][vo/gpu/vulkan]   gbrap16 => 4 planes 1x1 16/0 [r16/r16/r16/r16] (g/b/r/a)
[   0.476][d][vo/gpu/vulkan]   qsv
[   0.476][d][vo/gpu/vulkan]   d3d11va_vld
[   0.476][d][vo/gpu/vulkan]   yuv420p12be
[   0.476][d][vo/gpu/vulkan]   yuv420p12 => 3 planes 2x2 16/-4 [r16/r16/r16] (r/g/b)
[   0.476][d][vo/gpu/vulkan]   yuv420p14be
[   0.476][d][vo/gpu/vulkan]   yuv420p14 => 3 planes 2x2 16/-2 [r16/r16/r16] (r/g/b)
[   0.476][d][vo/gpu/vulkan]   yuv422p12be
[   0.476][d][vo/gpu/vulkan]   yuv422p12 => 3 planes 2x1 16/-4 [r16/r16/r16] (r/g/b)
[   0.476][d][vo/gpu/vulkan]   yuv422p14be
[   0.476][d][vo/gpu/vulkan]   yuv422p14 => 3 planes 2x1 16/-2 [r16/r16/r16] (r/g/b)
[   0.476][d][vo/gpu/vulkan]   yuv444p12be
[   0.476][d][vo/gpu/vulkan]   yuv444p12 => 3 planes 1x1 16/-4 [r16/r16/r16] (r/g/b)
[   0.476][d][vo/gpu/vulkan]   yuv444p14be
[   0.476][d][vo/gpu/vulkan]   yuv444p14 => 3 planes 1x1 16/-2 [r16/r16/r16] (r/g/b)
[   0.476][d][vo/gpu/vulkan]   gbrp12be
[   0.476][d][vo/gpu/vulkan]   gbrp12 => 3 planes 1x1 16/-4 [r16/r16/r16] (g/b/r)
[   0.476][d][vo/gpu/vulkan]   gbrp14be
[   0.476][d][vo/gpu/vulkan]   gbrp14 => 3 planes 1x1 16/-2 [r16/r16/r16] (g/b/r)
[   0.476][d][vo/gpu/vulkan]   yuvj411p => 3 planes 4x1 8/0 [r8/r8/r8] (r/g/b)
[   0.476][d][vo/gpu/vulkan]   bayer_bggr8
[   0.476][d][vo/gpu/vulkan]   bayer_rggb8
[   0.476][d][vo/gpu/vulkan]   bayer_gbrg8
[   0.476][d][vo/gpu/vulkan]   bayer_grbg8
[   0.476][d][vo/gpu/vulkan]   bayer_bggr16
[   0.476][d][vo/gpu/vulkan]   bayer_bggr16be
[   0.476][d][vo/gpu/vulkan]   bayer_rggb16
[   0.476][d][vo/gpu/vulkan]   bayer_rggb16be
[   0.476][d][vo/gpu/vulkan]   bayer_gbrg16
[   0.476][d][vo/gpu/vulkan]   bayer_gbrg16be
[   0.476][d][vo/gpu/vulkan]   bayer_grbg16
[   0.476][d][vo/gpu/vulkan]   bayer_grbg16be
[   0.476][d][vo/gpu/vulkan]   xvmc
[   0.476][d][vo/gpu/vulkan]   yuv440p10 => 3 planes 1x2 16/-6 [r16/r16/r16] (r/g/b)
[   0.476][d][vo/gpu/vulkan]   yuv440p10be
[   0.476][d][vo/gpu/vulkan]   yuv440p12 => 3 planes 1x2 16/-4 [r16/r16/r16] (r/g/b)
[   0.476][d][vo/gpu/vulkan]   yuv440p12be
[   0.476][d][vo/gpu/vulkan]   ayuv64 => 1 planes 1x1 16/0 [rgba16] (argb)
[   0.476][d][vo/gpu/vulkan]   ayuv64be
[   0.476][d][vo/gpu/vulkan]   videotoolbox_vl
[   0.476][d][vo/gpu/vulkan]   p010be
[   0.476][d][vo/gpu/vulkan]   gbrap12be
[   0.476][d][vo/gpu/vulkan]   gbrap12 => 4 planes 1x1 16/-4 [r16/r16/r16/r16] (g/b/r/a)
[   0.476][d][vo/gpu/vulkan]   gbrap10be
[   0.476][d][vo/gpu/vulkan]   gbrap10 => 4 planes 1x1 16/-6 [r16/r16/r16/r16] (g/b/r/a)
[   0.476][d][vo/gpu/vulkan]   mediacodec
[   0.476][d][vo/gpu/vulkan]   gray12be
[   0.476][d][vo/gpu/vulkan]   gray12 => 1 planes 1x1 16/-4 [r16] (r)
[   0.476][d][vo/gpu/vulkan]   gray10be
[   0.476][d][vo/gpu/vulkan]   gray10 => 1 planes 1x1 16/-6 [r16] (r)
[   0.476][d][vo/gpu/vulkan]   p016 => 2 planes 2x2 16/0 [r16/rg16] (r/gb)
[   0.476][d][vo/gpu/vulkan]   p016be
[   0.476][d][vo/gpu/vulkan]   gray9be
[   0.476][d][vo/gpu/vulkan]   gray9 => 1 planes 1x1 16/-7 [r16] (r)
[   0.476][d][vo/gpu/vulkan]   gbrpf32be
[   0.476][d][vo/gpu/vulkan]   gbrpf32 => 3 planes 1x1 32/0 [r32f/r32f/r32f] (g/b/r)
[   0.476][d][vo/gpu/vulkan]   gbrapf32be
[   0.477][d][vo/gpu/vulkan]   gbrapf32 => 4 planes 1x1 32/0 [r32f/r32f/r32f/r32f] (g/b/r/a)
[   0.477][d][vo/gpu/vulkan]   opencl
[   0.477][d][vo/gpu/vulkan]   gray14be
[   0.477][d][vo/gpu/vulkan]   gray14 => 1 planes 1x1 16/-2 [r16] (r)
[   0.477][d][vo/gpu/vulkan]   grayf32be
[   0.477][d][vo/gpu/vulkan]   grayf32 => 1 planes 1x1 32/0 [r32f] (r)
[   0.477][d][vo/gpu/vulkan]   yuva422p12be
[   0.477][d][vo/gpu/vulkan]   yuva422p12 => 4 planes 2x1 16/-4 [r16/r16/r16/r16] (r/g/b/a)
[   0.477][d][vo/gpu/vulkan]   yuva444p12be
[   0.477][d][vo/gpu/vulkan]   yuva444p12 => 4 planes 1x1 16/-4 [r16/r16/r16/r16] (r/g/b/a)
[   0.477][d][vo/gpu/vulkan]   nv42 => 2 planes 1x1 8/0 [r8/rg8] (r/bg)
[   0.477][v][vo/gpu] Testing FBO format rgba16hf
[   0.477][d][vo/gpu] Resizing texture: 16x16
[   0.477][v][vo/gpu/vulkan/libplacebo] Allocating 1048576 memory of type 0x1 (id 0) in heap 0
[   0.478][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 0 + 4096 from slab with size 1048576
[   0.478][d][vo/gpu/vulkan/libplacebo] Freeing slice 0 + 4096 from slab with size 1048576
[   0.478][v][vo/gpu] Using FBO format rgba16hf.
[   0.478][v][vo/gpu] No advanced processing required. Enabling dumb mode.
[   0.478][v][vo/gpu/win32] DPI detected from the new API: 96
[   0.478][v][vo/gpu/win32] display-fps: 144.000000
[   0.493][v][vo/gpu/win32] color-profile: C:\WINDOWS\system32\spool\drivers\color\sRGB Color Space Profile.icm
[   0.493][v][vo/gpu] Assuming 144.000000 FPS for display sync.
[   0.495][v][vd] Container reported FPS: 23.976028
[   0.497][v][vd] Codec list:
[   0.497][v][vd]     hevc - HEVC (High Efficiency Video Coding)
[   0.497][v][vd]     hevc_qsv (hevc) - HEVC (Intel Quick Sync Video acceleration)
[   0.497][v][vd]     hevc_cuvid (hevc) - Nvidia CUVID HEVC decoder
[   0.497][v][vd] Opening decoder hevc
[   0.497][v][vd] No hardware decoding requested.
[   0.497][v][vd] Using software decoding.
[   0.497][v][vd] Detected 8 logical cores.
[   0.497][v][vd] Requesting 9 threads for decoding.
[   0.499][v][vd] Selected codec: hevc (HEVC (High Efficiency Video Coding))
[   0.500][v][vf] User filter list:
[   0.500][v][vf]   (empty)
[   0.502][v][ad] Codec list:
[   0.502][v][ad]     aac - AAC (Advanced Audio Coding)
[   0.502][v][ad]     aac_fixed (aac) - AAC (Advanced Audio Coding)
[   0.502][v][ad] Opening decoder aac
[   0.502][v][ad] Requesting 1 threads for decoding.
[   0.510][v][ad] Selected codec: aac (AAC (Advanced Audio Coding))
[   0.510][v][af] User filter list:
[   0.510][v][af]   (empty)
[   0.510][v][cplayer] Starting playback...
[   0.512][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.512][v][af] [in] 44100Hz mono 1ch floatp
[   0.512][v][af] [userspeed] 44100Hz mono 1ch floatp
[   0.512][v][af] [userspeed] (disabled)
[   0.512][v][af] [convert] 44100Hz mono 1ch floatp
[   0.518][d][vd] DR parameter change to 3840x2176 yuv420p10 align=64
[   0.518][d][vd] Allocating new DR image...
[   0.518][v][vo/gpu/vulkan/libplacebo] Allocating 100270336 memory of type 0xe (id 3) in heap 1
[   0.548][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 0 + 25067584 from slab with size 100270336
[   0.556][d][vd] Allocating new DR image...
[   0.556][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 25067616 + 25067584 from slab with size 100270336
[   0.563][d][vd] Allocating new DR image...
[   0.563][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 50135232 + 25067584 from slab with size 100270336
[   0.571][d][vd] Allocating new DR image...
[   0.571][v][vo/gpu/vulkan/libplacebo] Allocating 401081344 memory of type 0xe (id 3) in heap 1
[   0.619][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 0 + 25067584 from slab with size 401081344
[   0.623][d][vd] Allocating new DR image...
[   0.623][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 25067616 + 25067584 from slab with size 401081344
[   0.626][d][vd] Allocating new DR image...
[   0.626][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 50135232 + 25067584 from slab with size 401081344
[   0.630][d][vd] Allocating new DR image...
[   0.630][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 75202848 + 25067584 from slab with size 401081344
[   0.635][d][vd] Allocating new DR image...
[   0.635][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 100270464 + 25067584 from slab with size 401081344
[   0.639][v][vd] Decoder format: 3840x2160 yuv420p10 bt.2020-ncl/bt.2020/bt.1886/limited/auto CL=unknown (auto 0.000000/0.000000/0.000000)
[   0.639][v][vf] [in] 3840x2160 yuv420p10 bt.2020-ncl/bt.2020/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264
[   0.640][v][vf] [userdeint] 3840x2160 yuv420p10 bt.2020-ncl/bt.2020/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264
[   0.640][v][vf] [userdeint] (disabled)
[   0.640][v][vf] [autorotate] 3840x2160 yuv420p10 bt.2020-ncl/bt.2020/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264
[   0.640][v][vf] [autorotate] (disabled)
[   0.640][v][vf] [convert] 3840x2160 yuv420p10 bt.2020-ncl/bt.2020/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264
[   0.640][v][vf] [convert] (disabled)
[   0.640][v][vf] [out] 3840x2160 yuv420p10 bt.2020-ncl/bt.2020/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264
[   0.640][v][ao] Trying audio driver 'wasapi'
[   0.640][v][ao/wasapi] requested format: 44100 Hz, mono channels, floatp
[   0.640][d][ao/wasapi] Init wasapi
[   0.640][d][ao/wasapi] Find device ''
[   0.640][d][vd] Allocating new DR image...
[   0.641][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 125338080 + 25067584 from slab with size 401081344
[   0.644][v][ao/wasapi] No device specified. Selecting default.
[   0.647][v][ao/wasapi] Selecting device '{a2cc054d-e306-4bd9-96bd-06e26dbe15d8}' (1 - BenQ PJ (2- AMD High Definition Audio Device))
[   0.647][v][ao/wasapi] Monitoring changes in device {0.0.0.00000000}.{a2cc054d-e306-4bd9-96bd-06e26dbe15d8}
[   0.649][d][ao/wasapi] Init wasapi thread
[   0.649][d][ao/wasapi] Activating pAudioClient interface
[   0.651][d][ao/wasapi] Probing formats
[   0.663][v][ao/wasapi] Trying mono float (32/32 bits) @ 44100hz (shared) -> ok
[   0.663][v][ao/wasapi] Closest match is stereo float (32/32 bits) @ 48000hz
[   0.663][v][ao/wasapi] Accepted as stereo float @ 48000hz -> stereo float (32/32 bits) @ 48000hz (shared)
[   0.663][d][ao/wasapi] Fixing format
[   0.663][d][ao/wasapi] IAudioClient::GetDevicePeriod
[   0.663][v][ao/wasapi] Device period: 10 ms
[   0.663][d][ao/wasapi] IAudioClient::Initialize
[   0.675][d][ao/wasapi] IAudioClient::Initialize pRenderClient
[   0.675][d][ao/wasapi] IAudioClient::Initialize IAudioClient_SetEventHandle
[   0.675][d][ao/wasapi] IAudioClient::Initialize IAudioClient_GetBufferSize
[   0.675][v][ao/wasapi] Buffer frame count: 2400 (50 ms)
[   0.675][v][ao/wasapi] IAudioClock::GetFrequency gave a frequency of 384000.
[   0.676][d][ao/wasapi] IAudioClient::Initialize pAudioVolume
[   0.676][d][ao/wasapi] Entering dispatch loop
[   0.676][d][ao/wasapi] Init wasapi done
[   0.676][v][ao/wasapi] device buffer: 2400 samples.
[   0.676][v][ao/wasapi] using soft-buffer of 9600 samples.
[   0.677][i][cplayer] AO: [wasapi] 48000Hz stereo 2ch float
[   0.677][v][cplayer] AO: Description: Windows WASAPI audio output (event mode)
[   0.677][i][cplayer] VO: [gpu] 3840x2160 yuv420p10
[   0.677][v][cplayer] VO: Description: Shader-based GPU Renderer
[   0.677][v][vo/gpu] reconfig to 3840x2160 yuv420p10 bt.2020-ncl/bt.2020/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264
[   0.677][d][vo/gpu] screen size: 1920x1040
[   0.677][v][vo/gpu/win32] save window bounds: 1600:-560:3840:2160
[   0.678][v][vo/gpu/win32] reset window bounds: 2560:0:1920:1080
[   0.680][v][vo/gpu/win32] DPI detected from the new API: 96
[   0.681][v][vo/gpu/win32] display-fps: 59.940060
[   0.690][v][vo/gpu/win32] color-profile: C:\WINDOWS\system32\spool\drivers\color\ASUS MG279 #1 2019-07-13 08-14 D6500 2.2 F-S XYZLUT+MTX.icm
[   0.690][d][vo/gpu/win32] move window: 2560:0
[   0.690][v][vo/gpu/win32] resize window: 1920:1080
[   0.694][d][vo/gpu/vulkan/libplacebo] Requested image count: 4 (min 1 max 16)
[   0.694][v][vo/gpu/vulkan/libplacebo] (Re)creating swapchain of size 1920x1080
[   0.721][v][vo/gpu] Resize: 1920x1080
[   0.721][v][vo/gpu] Window size: 1920x1080
[   0.721][v][vo/gpu] Video source: 3840x2160 (1:1)
[   0.721][v][vo/gpu] Video display: (0, 0) 3840x2160 -> (0, 0) 1920x1080
[   0.721][v][vo/gpu] Video scale: 0.500000/0.500000
[   0.721][v][vo/gpu] OSD borders: l=0 t=0 r=0 b=0
[   0.721][v][vo/gpu] Video borders: l=0 t=0 r=0 b=0
[   0.721][v][vo/gpu] Texture for plane 0: 3840x2160
[   0.721][v][vo/gpu/vulkan/libplacebo] Allocating 66846720 memory of type 0x1 (id 0) in heap 0
[   0.729][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 0 + 16711680 from slab with size 66846720
[   0.729][v][vo/gpu] Texture for plane 1: 1920x1080
[   0.729][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 16711680 + 4718592 from slab with size 66846720
[   0.729][v][vo/gpu] Texture for plane 2: 1920x1080
[   0.729][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 21430272 + 4718592 from slab with size 66846720
[   0.729][v][vo/gpu] Testing FBO format rgba16hf
[   0.729][d][vo/gpu] Resizing texture: 16x16
[   0.729][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 0 + 4096 from slab with size 1048576
[   0.729][d][vo/gpu/vulkan/libplacebo] Freeing slice 0 + 4096 from slab with size 1048576
[   0.729][v][vo/gpu] Using FBO format rgba16hf.
[   0.729][v][vo/gpu] No advanced processing required. Enabling dumb mode.
[   0.729][v][vo/gpu] Resize: 1920x1080
[   0.729][v][vo/gpu] Window size: 1920x1080
[   0.729][v][vo/gpu] Video source: 3840x2160 (1:1)
[   0.729][v][vo/gpu] Video display: (0, 0) 3840x2160 -> (0, 0) 1920x1080
[   0.729][v][vo/gpu] Video scale: 0.500000/0.500000
[   0.729][v][vo/gpu] OSD borders: l=0 t=0 r=0 b=0
[   0.729][v][vo/gpu] Video borders: l=0 t=0 r=0 b=0
[   0.729][v][vo/gpu] Assuming 59.940060 FPS for display sync.
[   0.730][v][vo/gpu] DR enabled: yes
[   0.731][v][vo/gpu/vulkan/libplacebo] Allocating 1048576 memory of type 0x1 (id 0) in heap 0
[   0.731][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 0 + 192 from slab with size 1048576
[   0.733][d][vo/gpu/vulkan/libplacebo] vertex shader source:
[   0.733][d][vo/gpu/vulkan/libplacebo] [  1] #version 450
[   0.733][d][vo/gpu/vulkan/libplacebo] [  2] #define tex1D texture
[   0.733][d][vo/gpu/vulkan/libplacebo] [  3] #define tex3D texture
[   0.733][d][vo/gpu/vulkan/libplacebo] [  4] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x))
[   0.733][d][vo/gpu/vulkan/libplacebo] [  5] layout(location=0) in vec2 vertex_position;
[   0.733][d][vo/gpu/vulkan/libplacebo] [  6] layout(location=1) in vec2 vertex_texcoord0;
[   0.733][d][vo/gpu/vulkan/libplacebo] [  7] layout(location=1) out vec2 texcoord0;
[   0.733][d][vo/gpu/vulkan/libplacebo] [  8] layout(location=2) in vec2 vertex_texcoord1;
[   0.733][d][vo/gpu/vulkan/libplacebo] [  9] layout(location=2) out vec2 texcoord1;
[   0.733][d][vo/gpu/vulkan/libplacebo] [ 10] layout(location=3) in vec2 vertex_texcoord2;
[   0.733][d][vo/gpu/vulkan/libplacebo] [ 11] layout(location=3) out vec2 texcoord2;
[   0.733][d][vo/gpu/vulkan/libplacebo] [ 12] void main() {
[   0.733][d][vo/gpu/vulkan/libplacebo] [ 13] gl_Position = vec4(vertex_position, 1.0, 1.0);
[   0.733][d][vo/gpu/vulkan/libplacebo] [ 14] texcoord0 = vertex_texcoord0;
[   0.733][d][vo/gpu/vulkan/libplacebo] [ 15] texcoord1 = vertex_texcoord1;
[   0.733][d][vo/gpu/vulkan/libplacebo] [ 16] texcoord2 = vertex_texcoord2;
[   0.733][d][vo/gpu/vulkan/libplacebo] [ 17] }
[   0.784][d][vo/gpu/vulkan/libplacebo] shaderc compile status 'success' (0 errors, 0 warnings)
[   0.784][d][vo/gpu/vulkan/libplacebo] fragment shader source:
[   0.784][d][vo/gpu/vulkan/libplacebo] [  1] #version 450
[   0.784][d][vo/gpu/vulkan/libplacebo] [  2] #define tex1D texture
[   0.784][d][vo/gpu/vulkan/libplacebo] [  3] #define tex3D texture
[   0.784][d][vo/gpu/vulkan/libplacebo] [  4] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x))
[   0.784][d][vo/gpu/vulkan/libplacebo] [  5] layout(location=0) out vec4 out_color;
[   0.784][d][vo/gpu/vulkan/libplacebo] [  6] layout(location=1) in vec2 texcoord0;
[   0.784][d][vo/gpu/vulkan/libplacebo] [  7] layout(location=2) in vec2 texcoord1;
[   0.784][d][vo/gpu/vulkan/libplacebo] [  8] layout(location=3) in vec2 texcoord2;
[   0.784][d][vo/gpu/vulkan/libplacebo] [  9] layout(std140, binding=3) uniform UBO {
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 10] layout(offset=0) mat3 colormatrix;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 11] layout(offset=48) mat3 cms_matrix;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 12] layout(offset=96) mat2 texture_rot0;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 13] layout(offset=128) mat2 texture_rot1;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 14] layout(offset=160) mat2 texture_rot2;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 15] };
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 16] layout(std430, push_constant) uniform PushC {
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 17] layout(offset=0) vec3 colormatrix_c;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 18] layout(offset=16) vec3 src_luma;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 19] layout(offset=32) vec3 dst_luma;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 20] layout(offset=48) vec2 texture_size0;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 21] layout(offset=56) vec2 texture_off0;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 22] layout(offset=64) vec2 pixel_size0;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 23] layout(offset=72) vec2 texture_size1;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 24] layout(offset=80) vec2 texture_off1;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 25] layout(offset=88) vec2 pixel_size1;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 26] layout(offset=96) vec2 texture_size2;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 27] layout(offset=104) vec2 texture_off2;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 28] layout(offset=112) vec2 pixel_size2;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 29] };
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 30] layout(binding=0) uniform sampler2D texture0;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 31] layout(binding=1) uniform sampler2D texture1;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 32] layout(binding=2) uniform sampler2D texture2;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 33] void main() {
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 34] vec4 color = vec4(0.0, 0.0, 0.0, 1.0);
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 35] color.r = 64.250000 * vec4(texture(texture0, texcoord0)).r;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 36] color.g = 64.250000 * vec4(texture(texture1, texcoord1)).r;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 37] color.b = 64.250000 * vec4(texture(texture2, texcoord2)).r;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 38] color = color.rgbr;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 39] color.rgb = mat3(colormatrix) * color.rgb + colormatrix_c;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 40] color.a = 1.0;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 41] // color mapping
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 42] // linearize
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 43] color.rgb = clamp(color.rgb, 0.0, 1.0);
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 44] color.rgb = pow(color.rgb, vec3(2.4));
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 45] color.rgb *= vec3(1.0/1.000000);
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 46] color.rgb *= vec3(1.000000);
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 47] color.rgb = cms_matrix * color.rgb;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 48] color.rgb *= vec3(1.000000);
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 49] // delinearize
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 50] color.rgb = clamp(color.rgb, 0.0, 1.0);
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 51] color.rgb *= vec3(1.000000);
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 52] color.rgb = pow(color.rgb, vec3(1.0/2.4));
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 53] out_color = color;
[   0.784][d][vo/gpu/vulkan/libplacebo] [ 54] }
[   0.788][d][vo/gpu/vulkan/libplacebo] shaderc compile status 'success' (0 errors, 0 warnings)
[   0.794][d][vo/gpu/vulkan/libplacebo] Pass statistics: size 42636, SPIR-V: vert 932 frag 2568 comp 0
[   0.795][v][vo/gpu/vulkan/libplacebo] Allocating 1048576 memory of type 0x1 (id 0) in heap 0
[   0.796][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 0 + 192 from slab with size 1048576
[   0.796][d][vo/gpu/vulkan/libplacebo] Resized buffer pool of type 6 to size 1
[   0.796][v][osd/libass] fontselect: (sans-serif, 400, 0) -> ArialMT, 0, ArialMT
[   0.797][v][cplayer] first video frame after restart shown
[   0.797][v][autoconvert] inserting resampler
[   0.798][v][swresample] format change, reinitializing resampler
[   0.798][v][swresample] 44100Hz mono floatp -> 48000Hz stereo float
[   0.798][v][swresample] Remix: mono -> stereo
[   0.798][v][af] [out] 48000Hz stereo 2ch float
[   0.798][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.798][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.798][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.798][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.798][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.798][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.798][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.798][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.798][v][cplayer] starting audio playback
[   0.798][v][cplayer] playback restart complete @ 0.000000
[   0.798][d][ao/wasapi] Thread Resume
[   0.798][d][ao/wasapi] Thread Reset
[   0.799][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.799][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.799][d][vd] Allocating new DR image...
[   0.799][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 150405696 + 25067584 from slab with size 401081344
[   0.803][d][vd] Allocating new DR image...
[   0.803][d][osc] osc_init 
[   0.803][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.841][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 175473312 + 25067584 from slab with size 401081344
[   0.844][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.844][d][vd] Allocating new DR image...
[   0.893][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 200540928 + 25067584 from slab with size 401081344
[   0.895][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.895][d][vd] Allocating new DR image...
[   0.895][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.895][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.935][d][vo/gpu/vulkan/libplacebo] Sub-allocating slice 225608544 + 25067584 from slab with size 401081344
[   0.938][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.938][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   0.976][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.017][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.017][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.049][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.060][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.102][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.102][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.143][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.185][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.185][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.227][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.227][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.268][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.269][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.309][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.310][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.352][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.394][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.394][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.435][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.435][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.477][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.477][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.519][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.519][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.560][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.601][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.601][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.643][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.644][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.676][v][ao/wasapi] OnPropertyValueChanged triggered on device {0.0.0.00000000}.{a2cc054d-e306-4bd9-96bd-06e26dbe15d8}
[   1.677][v][ao/wasapi] Changed property: {9855c4cd-df8c-449c-a181-8191b68bd06c},0
[   1.686][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.686][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.726][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.769][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.769][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.810][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.810][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.853][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.853][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.894][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.894][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.935][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.978][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.978][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   1.978][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.019][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.061][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.061][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.102][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.102][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.145][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.185][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.185][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.227][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.227][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.269][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.269][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.310][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.310][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.353][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.394][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.394][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.437][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.437][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.477][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.477][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.519][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.519][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.561][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.562][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.602][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.645][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.645][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.686][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.686][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.729][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.729][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.770][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.770][d][ffmpeg/audio] aac: ChannelElement 1.0 missing 
[   2.787][d][cplayer] Run command: cycle, flags=73, args=[pause, (NULL)]
[   2.787][v][cplayer] Set property: pause -> 1
[   2.787][d][ao/wasapi] Thread Reset
[  11.147][d][cplayer] Run command: quit, flags=73, args=[0]
[  11.147][v][cplayer] EOF code: 5  
[  11.147][v][ad] Uninit decoder.
[  11.147][d][ao/wasapi] Thread Reset
[  11.147][v][vd] Uninit decoder.
[  11.193][d][cplayer] Terminating demuxers...
[  11.194][d][cplayer] Done terminating demuxers.
[  11.194][v][cplayer] finished playback, success (reason 3)
[  11.195][i][cplayer] 
[  11.195][i][cplayer] 
[  11.196][i][cplayer] Exiting... (Quit)
[  11.196][v][ytdl_hook] Exiting...
[  11.196][v][stats] Exiting...
[  11.197][v][osc] Exiting...
[  11.200][d][ao/wasapi] Uninit wasapi
[  11.200][d][ao/wasapi] Thread Reset
[  11.200][d][ao/wasapi] Thread Reset
[  11.200][d][ao/wasapi] Thread shutdown
[  11.207][d][ao/wasapi] Thread uninit done
[  11.207][d][ao/wasapi] Thread return
[  11.208][d][ao/wasapi] Uninit wasapi done
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 0 + 25067584 from slab with size 100270336
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 25067616 + 25067584 from slab with size 100270336
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 50135232 + 25067584 from slab with size 100270336
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 0 + 25067584 from slab with size 401081344
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 25067616 + 25067584 from slab with size 401081344
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 50135232 + 25067584 from slab with size 401081344
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 75202848 + 25067584 from slab with size 401081344
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 100270464 + 25067584 from slab with size 401081344
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 125338080 + 25067584 from slab with size 401081344
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 175473312 + 25067584 from slab with size 401081344
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 200540928 + 25067584 from slab with size 401081344
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 225608544 + 25067584 from slab with size 401081344
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 150405696 + 25067584 from slab with size 401081344
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 0 + 16711680 from slab with size 66846720
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 16711680 + 4718592 from slab with size 66846720
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 21430272 + 4718592 from slab with size 66846720
[  11.208][d][vo/gpu] flushing shader cache
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 0 + 192 from slab with size 1048576
[  11.208][d][vo/gpu/vulkan/libplacebo] Freeing slice 0 + 192 from slab with size 1048576
[  11.213][v][vo/gpu/vulkan/libplacebo] Freed slab of size 1048576
[  11.213][v][vo/gpu/vulkan/libplacebo] Freed slab of size 66846720
[  11.214][v][vo/gpu/vulkan/libplacebo] Freed slab of size 100270336
[  11.215][v][vo/gpu/vulkan/libplacebo] Freed slab of size 401081344
[  11.256][v][vo/gpu/vulkan/libplacebo] Freed slab of size 1048576
[  11.257][v][vo/gpu/vulkan/libplacebo] Freed slab of size 1048576
[  11.257][d][vo/gpu/vulkan/libplacebo] Flushing remaining commands...
[  11.267][v][vo/gpu/win32] uninit

For Windows 10 1903 + AMD Driver 19.7.3, rossy's build still needs at least windowed-fullscreen to make 10 bit work. i.e., witout --fs 10 bit won't work, but --d3d11-exclusive is not a hard requirement (still a good thing to have).

If the goal is to play HDR10 videos, a full 10-bit chain is not necessary. To prevent automatic remapping to SDR, the correct HDR WCG 10-bit DXGI formats must be used even if the signal is 8-bit RGB with dithering.

It seems mpv git master branch already support 10bit?
I just test mpv git master in Windows 10 1903 with nvidia 10-bit enabled driver. And didn't see any different form the old 10bit build and the shinchiro git build. Both mpv versions show smooth bars.

Used test file https://jursonovicst.github.io/gradient/

[vo/gpu] Reported display depth: 8
But actually 10bit?

gradients are usually smooth, even on 8 bit, because mpv might slightly deband (depending on the settings) and also dithers.

the reported display depth has noting todo with the actual 10 bit support. it's usually just what depth the actual context returns. in the case of opengl it's what "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE" returns from the framebuffer. so either the context in your case isn't requesting a 10bit capable one or it couldn't. this is just the general idea.

can't give you a more definite answer, since i don't know what backend is actually used on your end and depending on the backend i am sure if it's implemented.

@Akemi so how to check it?

no idea like that. there is no log. i have no clue what settings you use. i have no clue what backend you use, etc. also i am not on windows nor am i a windows dev.

you either check the code or get a reply of a specific dev who knows.

i personally am only aware that 10bit support is available on linux. if i remember correctly till some time ago windows only had support for 10bit surfaces via directx but not opengl (at least with nvidia)? for macOS i only recently made a PR (#6819). our vulkan gpu backend doesn't support it yet(?), neither does angle nor d3d11(?) or at least the detection of a higher bit depth than 10. it could actually request a proper framebuffer/surface/context.

I know 10bit is support in linux, but neither GNOME nor KDE support 10bit and they show corrupted colors when I enabled 10bit in Xorg.

And I just removed all configures and tested gradients in Windows mpv, and it was the deband effect in git branch. But I can also confirm the 10bit test version works with --d3d11-colorspace=srgb --d3d11-format=rgb10_a2 --target-trc=srgb --target-prim=bt.709 in both fs and non-fs.

if it still says "[vo/gpu] Reported display depth: 8", it will still dither to 8bit and with a 10 bit context/surface/framebuffer you will not see any 'improvements'. if a 10bit capable one is selected, and in the case the detection of the bit depth fails you would at least need to set --dither-depth=10 to overwrite the auto-detection.

also dithering already can eliminate quite a bit of banding.

[cplayer] (+) Video --vid=1 (*) (hevc 3840x2160 5.000fps)
[vo/gpu] Probing for best GPU context.
[vo/gpu/d3d11] Initializing GPU context 'd3d11'
[vo/gpu/d3d11] Using Direct3D 11 feature level 12_1
[vo/gpu/d3d11] Device Name: NVIDIA GeForce GTX 1070
[vo/gpu/d3d11] Device ID: 10de:1b81 (rev a1)
[vo/gpu/d3d11] Subsystem ID: 1458:36fc
[vo/gpu/d3d11] LUID: 000000000000de0c
[vo/gpu/d3d11] Initializing SPIR-V compiler 'shaderc'
[vo/gpu/d3d11] Using Direct3D 11.1 runtime
[vo/gpu/d3d11] Maximum Texture2D size: 16384x16384
[vo/gpu/d3d11] D3DCompiler version: 10.0.18362.1
[vo/gpu/d3d11] Swapchain format: 24
[vo/gpu/d3d11] Using DXGI 1.2+
[vo/gpu/d3d11] Using flip-model presentation
[vo/gpu] Testing FBO format rgba16
[vo/gpu] Using FBO format rgba16.
[vo/gpu/win32] DPI detected from the new API: 144
[vo/gpu/win32] display-fps: 59.997000
[vo/gpu/win32] color-profile: C:\Windows\system32\spool\drivers\color\sRGB Color Space Profile.icm
[vo/gpu] Assuming 59.997000 FPS for display sync.
[vd] Container reported FPS: 5.000000
[vd] Codec list:
[vd] hevc - HEVC (High Efficiency Video Coding)
[vd] hevc_cuvid (hevc) - Nvidia CUVID HEVC decoder
[vd] Opening video decoder hevc
[vd] Not trying to use hardware decoding: codec hevc is not on whitelist, or does not support hardware acceleration.
[vd] Using software decoding.
[vd] Detected 24 logical cores.
[vd] Requesting 16 threads for decoding.
[vd] Selected video codec: hevc (HEVC (High Efficiency Video Coding))
[cplayer] Starting playback...
[vd] Decoder format: 3840x2160 [0:1] gbrp10 rgb/auto/auto/full CL=unknown (auto 0.000000/0.000000/0.000000)
[vf] Video filter chain:
[vf] [in] 3840x2160 gbrp10 rgb/bt.709/srgb/full SP=1.000000 CL=mpeg1/jpeg
[vf] [out] 3840x2160 gbrp10 rgb/bt.709/srgb/full SP=1.000000 CL=mpeg1/jpeg
[cplayer] VO: [gpu] 3840x2160 gbrp10
[cplayer] VO: Description: Shader-based GPU Renderer
[vo/gpu] Reported display depth: 10
[vo/gpu] Testing FBO format rgba16
[vo/gpu] Using FBO format rgba16.
[vo/gpu] Reported display depth: 10
[vo/gpu] Dither to 10.

Looks fine?

with Swapchain format: 24 (DXGI_FORMAT_R10G10B10A2_UNORM) it seems fine, as far as a quick looks goes.

Any plan to merge the patch? Although it is not mature but works in some case.

BTW, is that even a legit file from your test? The log indicates a container FPS of 5.000?

@Hrxn it was the test video in https://jursonovicst.github.io/gradient/
I watched a 10bit movie later and it looks good.

Ah, okay. Yeah, a gradient test file, makes sense, good idea.

@RinCat The patch from rossy would be part of PR #5804. My initial intention for opening this issue was just SDR 10 bit presentation. Anyway, if HDR 10 bit gets implemented, then of course SDR 10 bit is already covered.

I watched a 10bit movie later and it looks good.

How different are they? Between 10 bit and 8 bit presentations, if you use --profile=gpu-hq (which turns on deband) and --dither-depth=10 for 10 bit build (--dither-depth=8 for git master build)? I didn't test with deband enabled actually.

@zc62 can't say much different between gpu-hq + 8bit dither and 10bit + 10bit dither when the video is high bitrate. They are only slightly different when paused and compared one by one.

I will check some low bitrate video later.

So I'm reading through all of this information, and I want to make sure I'm understanding things correctly. I have an HDR display and I'm running Windows 10 1903 in HDR10. I have an Nvidia RTX 2060 with the Studio 431.70 driver, configured to 4:2:2 12bit. I have --dither-depth=10 in my config, and I'm using an icc. The mpv log (attached) says that the display depth is 8 bit, when clearly it isn't. But based of what Rossy said earlier, the fbo chosen, would suggest 10 bit. I have tried --gpu-api=vulkan and --gpu-api=opengl, as well as auto. The result each time, is the same. The picture appears to be correct??? But am I actually getting a 10 bit output? Does setting the dither depth override the display depth report?

Portable mpv log.txt

I have an Nvidia RTX 2060 with the Studio 431.70 driver, configured to 4:2:2 12bit.

Please clarify here, configured to what exactly? Because the driver output (I don't have this new driver and my GPU is fairly old, but I'm pretty sure that's something still working the same) should always be RGB, and there is no chroma subsampling then. Do you just mean that you have set the output to 12 bit in the nvidia driver options (12 bpc, bits per channel, as it should be called in their driver)?

Do you just mean that you have set the output to 12 bit in the nvidia driver options (12 bpc, bits per channel, as it should be called in their driver)?

Yes, in the Nvidia control panel I have set it to 4:2:2 12 bits per channel.

Because the driver output (I don't have this new driver and my GPU is fairly old, but I'm pretty sure that's something still working the same) should always be RGB, and there is no chroma subsampling then

But wouldn't that guarantee an 8 bit depth?

Windows 8 bit

Windows 12 bit

But wouldn't that guarantee an 8 bit depth?

No, of course not, for example this swapchain format mentioned earlier in here:
DXGI_FORMAT_R10G10B10A2_UNORM

Which is, taken from MSFT Docs:

A four-component, 32-bit unsigned-normalized-integer format that supports 10 bits for each color and 2 bits for alpha.

So 10 bits depth for R, G, and B.

Yes, in the Nvidia control panel I have set it to 4:2:2 12 bits per channel.

Could you provide a screenshot of this from the driver control panel? Cause that doesn't look right, how/why would you enforce a 4:2:2 chroma subsampling in the driver?
I mean, you probably can somehow, but this would then interfere with whatever gets sent out from mpv, from example, I think.

Could you provide a screenshot of this from the driver control panel? Cause that doesn't look right, how/why would you enforce a 4:2:2 chroma subsampling in the driver?

nvidia color

@Doofussy2 You are using mpv git master build, which does not support 10 bit on windows, this is why this issue is here. Use rossy's build to test 10 bit capability.

YCbCr422 is not recommended. Choose 10 bpc, RGB, Full range.

Choose 10 bpc, RGB, Full range.

There is no such option. It's always 8 bit.

nvidia color rgb

Ah, yes, these screenshots show actually the driver output options I had in mind.

Well, if you have this new nVidia Studio driver (together with a pretty recent GPU supported by it), then you should be able to choose 10 bpc there. At least that's my understanding of their new driver... I run the latest normal nVidia drivers, but on an old GPU, I can only select 8 bpc there.

Well, if you have this new nVidia Studio driver (together with a pretty recent GPU supported by it), then you should be able to choose 10 bpc there. At least that's my understanding of their new driver... I run the latest normal nVidia drivers, but on an old GPU, I can only select 8 bpc there.

I have a GTX 1050, GTX 1060 and this RTX 2060. With all of them, with any driver, the options never change.

Apologies guys, Rossy's build was so far back, it was hidden. I just gave it a try, and that makes a big difference. Not so much to the color, as it appears that I had that pretty well dialed in, but with this build, I get the correct luminance.

But there it is, 10 bit

[ 0.104][v][vo/gpu] Reported display depth: 10
[ 0.104][v][vo/gpu] Testing FBO format rgba16
[ 0.104][d][vo/gpu] Resizing texture: 16x16
[ 0.104][v][vo/gpu] Using FBO format rgba16.

This really needs to be rolled into the master.

This is achieving HDR passthrough, for me!

There is no such option. It's always 8 bit.

Sounds like you are using an UHD HDR TV. Then 422 12bit is reasonable. But I guess mpv is always outputting RGB? https://github.com/mpv-player/mpv/wiki/Video-output---shader-stage-diagram

Sounds like you are using an UHD HDR TV.

Correct. I am using a 55 inch display.

But I guess mpv is always outputting RGB?

Based on that diagram, it would appear that it always converts to RGB. And in my case it doesn't appear to matter, as no tone mapping is being done, and the display is doing all the work. The metadata is being passed to the display. Which raises a new set of issues for me, but that's a different subject.

@Doofussy2 what's your cable? HDMI or DP?

what's your cable? HDMI or DP?

HDMI

@Doofussy2

4K Full RGB 10bit request 18Gbps bandwidth, so you cannot use it unless all your devices support HDMI 2.1.
Try use DisplayPort 1.3+.

4K Full RGB 10bit request 18Gbps bandwidth, so you cannot use it unless all your devices support HDMI 2.1.

That's incorrect. HDMI 2.0a, b and c all have full support. And the full bandwidth only used at 60fps. I've been doing this for years.

HDMI 2.1 supports up to 10K / 48Gb/s. My cables support 18Gb/s

https://www.monoprice.com/product?p_id=14467

@Doofussy2 No, HDMI 2.0abc at 18Gb/s only can do 4K HDR @ 60 with 4:2:0 or 4:2:2, no full RGB support.

Oh I see what you're saying. But it would still terminate to HDMI, as my GPU is the only device with a DP.

You have chosen 4K @ 60 with RGB full range, so you can't do 10bit. that's why only 8bit in the list.

You have chosen 4K @ 60 with RGB full range, so you can't do 10bit. that's why only 8bit in the list.

Right, but I don't have much choice. I'm not lowering the refresh rate. I have a DP 1.4 active dongle. I may give that a try, but everything appears to be working well :)

Any updates on this?
By this I mean native 10 bit output for Windows 10.

@jeeb's test build doesn't enable SDR 10 bit in Windows. @rossy's does. I very much want this to work.

@Doofussy2 it would be pretty sweet if they add it, now that almost every 4K TV has a 10-bit panel(or 8-bit+2-bit FRC) it would be great if mpv could display 10-bit content on a 10-bit display correctly.

Was this page helpful?
0 / 5 - 0 ratings