Skip to content

d3d12: Fix usage of H264/HEVC specific classes when VIDEO_CODEC_H26XENC not set

What does this MR do and why?

d3d12: Fix usage of H264/HEVC specific classes when VIDEO_CODEC_H26XENC not set

Fixes: 8af080cec49 ("d3d12: Implement d3d12_video_encoder_get_encode_headers for out of band VPS, SPS, PPS")

Otherwise, building d3d12 gallium driver without -Dvideo-codecs including h264/hevc has linker errors.

[531/1082] Compiling C object src/vulkan/runtime/libvulkan...me.a.p/meson-generated_.._vk_synchronization_helpers.c.obj
[591/1082] Linking target src/microsoft/spirv_to_dxil/spirv_to_dxil.dll
   Bibliothek "src\microsoft\spirv_to_dxil\spirv_to_dxil.lib" und Objekt "src\microsoft\spirv_to_dxil\spirv_to_dxil.exp" werden erstellt.
[1076/1082] Linking target src/gallium/targets/wgl/libgallium_wgl.dll
FAILED: src/gallium/targets/wgl/libgallium_wgl.dll
"link"  /MACHINE:x64 /OUT:src/gallium/targets/wgl/libgallium_wgl.dll src/gallium/targets/wgl/libgallium_wgl.dll.p/wgl.c.obj "/release" "/nologo" "/OPT:REF" "/DLL" "/DEF:src\gallium\targets/wgl\gallium_wgl.def" "/IMPLIB:src\gallium\targets/wgl\libgallium_wgl.lib" "/WHOLEARCHIVE:src\gallium\frontends/wgl\libwgl.a" "/fixed:no" "/dynamicbase" "/nxcompat" "/incremental:no" "src\gallium\auxiliary\libgallium.a" "src\compiler\nir\libnir.a" "src\compiler\libcompiler.a" "src\util\libmesa_util.a" "src\util\libmesa_util_sse41.a" "subprojects\zlib-1.3\libz.a" "src\util\blake3\libblake3.a" "src\c11/impl\libmesa_util_c11.a" "src\compiler\glsl\libglsl.a" "src\compiler\glsl\glcpp\libglcpp.a" "src\mesa\libmesa.a" "src\mesa\libmesa_sse41.a" "src\compiler\spirv\libvtn.a" "src\gallium\winsys/sw/gdi\libwsgdi.a" "src\mapi\glapi\libglapi_static.a" "src\gallium\auxiliary\libgalliumvl.a" "src\gallium\drivers/d3d12\libd3d12.a" "src\microsoft\compiler\libdxil_compiler.a" "subprojects\DirectX-Headers-1.0\libd3dx12-format-properties.a" "subprojects\DirectX-Headers-1.0\libDirectX-Guids.a" "src\gallium\winsys/d3d12/wgl\libd3d12winsys.a" "src\gallium\frontends/wgl\libwgl.a" "src\util\libxmlconfig.a" "ws2_32.lib" "ws2_32.lib" "version.lib" "version.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "comdlg32.lib" "advapi32.lib"
   Bibliothek "src\gallium\targets/wgl\libgallium_wgl.lib" und Objekt "src\gallium\targets/wgl\libgallium_wgl.exp" werden erstellt.
libd3d12.a(d3d12_video_enc.cpp.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __cdecl d3d12_video_bitstream_builder_h264::d3d12_video_bitstream_builder_h264(bool)" (??0d3d12_video_bitstream_builder_h264@@QEAA@_N@Z)" in Funktion ""class std::unique_ptr<class d3d12_video_bitstream_builder_h264,struct std::default_delete<class d3d12_video_bitstream_builder_h264> > __cdecl std::make_unique<class d3d12_video_bitstream_builder_h264,0>(void)" (??$make_unique@Vd3d12_video_bitstream_builder_h264@@$$V$0A@@std@@YA?AV?$unique_ptr@Vd3d12_video_bitstream_builder_h264@@U?$default_delete@Vd3d12_video_bitstream_builder_h264@@@std@@@0@XZ)".
[1079/1082] Linking target src/microsoft/vulkan/vulkan_dzn.dll
   Bibliothek "src\microsoft\vulkan\vulkan_dzn.lib" und Objekt "src\microsoft\vulkan\vulkan_dzn.exp" werden erstellt.
ninja: build stopped: cannot make progress due to previous errors.

cc @jenatali @stefanmomberger

Edited by Sil Vilerino

Merge request reports