[vlc-devel] [PATCH 3/3] direct3d11: log the current display format
Steve Lhomme
robux4 at videolabs.io
Thu Sep 14 15:04:18 CEST 2017
---
modules/video_output/win32/direct3d11.c | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index 900cf29bdb..81f6e64df9 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -40,7 +40,7 @@
#define COBJMACROS
#include <initguid.h>
#include <d3d11.h>
-#include <dxgi1_5.h>
+#include <dxgi1_6.h>
#include <d3dcompiler.h>
/* avoided until we can pass ISwapchainPanel without c++/cx mode
@@ -1513,6 +1513,7 @@ static void D3D11SetColorSpace(vout_display_t *vd)
int best = -1;
int score, best_score = 0;
UINT support;
+ IDXGIOutput *dxgiOutput = NULL;
IDXGISwapChain3 *dxgiswapChain3 = NULL;
sys->display.colorspace = &color_spaces[0];
@@ -1589,6 +1590,32 @@ done:
if (dxgiswapChain3)
IDXGISwapChain3_Release(dxgiswapChain3);
+
+ if (SUCCEEDED(IDXGISwapChain_GetContainingOutput( sys->dxgiswapChain, &dxgiOutput )))
+ {
+ IDXGIOutput6 *dxgiOutput6 = NULL;
+ if (SUCCEEDED(IDXGIOutput_QueryInterface( dxgiOutput, &IID_IDXGIOutput6, (void **)&dxgiOutput6 )))
+ {
+ DXGI_OUTPUT_DESC1 desc1;
+ if (SUCCEEDED(IDXGIOutput6_GetDesc1( dxgiOutput6, &desc1 )))
+ {
+ const dxgi_color_space *csp = NULL;
+ for (int i=0; color_spaces[i].name; ++i)
+ {
+ if (color_spaces[i].dxgi == desc1.ColorSpace)
+ {
+ csp = &color_spaces[i];
+ break;
+ }
+ }
+
+ msg_Dbg(vd, "Output max luminance: %.1f, colorspace %s, bits per pixel %d", desc1.MaxFullFrameLuminance, csp?csp->name:"unknown", desc1.BitsPerColor);
+ sys->display.luminance_peak = desc1.MaxFullFrameLuminance;
+ }
+ IDXGIOutput6_Release( dxgiOutput6 );
+ }
+ IDXGIOutput_Release( dxgiOutput );
+ }
}
static const d3d_format_t *GetDirectRenderingFormat(vout_display_t *vd, vlc_fourcc_t i_src_chroma)
--
2.12.1
More information about the vlc-devel
mailing list