intel/decoder: make libvulkan_intel to depend on stub decoder when buildtyle=release.

The libvulkan_intel does not need the decoder when buildtype=release
where the debugging is disabled.

However, the decoder implementation is decided by the dep_expat
which may be turned on by like -Dtools=intel and the binary size
of libvulkan_intel increase unexpectedly.

This change creates the stub dependency and decide the exact
decoder dependency of libvulkan_intel by the buildtype.

Test: meson setup builddir -D build-tests=true -Dbuildtype=release --reconfigure && ninja -C builddir && cd builddir && meson test

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Signed-off-by: Andy Hsu <hwandy@google.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38569>
This commit is contained in:
Andy Hsu 2025-11-21 06:13:33 +00:00
parent 108d2d29a9
commit 2ee6b4d96e
2 changed files with 61 additions and 26 deletions

View file

@ -1,26 +1,41 @@
# Copyright © 2017 Intel Corporation
# SPDX-License-Identifier: MIT
libintel_decoder_files = files(
'intel_decoder.h',
)
libintel_decoder_common_args = {
'include_directories' : [inc_include, inc_src, inc_intel],
'c_args' : [no_override_init_args, sse2_args],
'gnu_symbol_visibility' : 'hidden',
'build_by_default' : false,
}
libintel_decoder_deps = [
libintel_decoder_stub_files = files(
'intel_decoder.h',
'intel_batch_decoder_stub.c',
)
libintel_decoder_impl_files = files (
'intel_decoder.h',
'intel_decoder.c',
'intel_batch_decoder.c',
)
libintel_decoder_stub_deps = [
idep_intel_dev
]
libintel_decoder_impl_deps = [
idep_intel_dev,
dep_expat
]
if not dep_expat.found()
libintel_decoder_files += files(
'intel_batch_decoder_stub.c',
)
libintel_decoder_deps = libintel_decoder_stub_deps
libintel_decoder_files = libintel_decoder_stub_files
libintel_decoder_brw_files = files()
libintel_decoder_elk_files = files()
else
libintel_decoder_deps += dep_expat
libintel_decoder_files += files(
'intel_decoder.c',
'intel_batch_decoder.c',
)
libintel_decoder_deps = libintel_decoder_impl_deps
libintel_decoder_files = libintel_decoder_impl_files
libintel_decoder_brw_files = files('intel_batch_decoder_brw.c')
libintel_decoder_elk_files = files('intel_batch_decoder_elk.c')
endif
@ -28,11 +43,8 @@ endif
libintel_decoder = static_library(
'intel_decoder',
[libintel_decoder_files, genX_xml_h, sha1_h],
include_directories : [inc_include, inc_src, inc_intel],
c_args : [no_override_init_args, sse2_args],
gnu_symbol_visibility : 'hidden',
dependencies : libintel_decoder_deps,
build_by_default : false,
kwargs : libintel_decoder_common_args
)
idep_intel_decoder = declare_dependency(
@ -43,11 +55,8 @@ idep_intel_decoder = declare_dependency(
libintel_decoder_brw = static_library(
'intel_decoder_brw',
[libintel_decoder_brw_files, genX_xml_h, sha1_h],
include_directories : [inc_include, inc_src, inc_intel],
c_args : [no_override_init_args, sse2_args],
gnu_symbol_visibility : 'hidden',
dependencies : idep_intel_decoder,
build_by_default : false,
kwargs : libintel_decoder_common_args
)
idep_intel_decoder_brw = declare_dependency(
@ -59,11 +68,8 @@ if with_intel_elk
libintel_decoder_elk = static_library(
'intel_decoder_elk',
[libintel_decoder_elk_files, genX_xml_h, sha1_h],
include_directories : [inc_include, inc_src, inc_intel],
c_args : [no_override_init_args, sse2_args],
gnu_symbol_visibility : 'hidden',
dependencies : idep_intel_decoder,
build_by_default : false,
kwargs : libintel_decoder_common_args
)
idep_intel_decoder_elk = declare_dependency(
@ -74,6 +80,32 @@ else
idep_intel_decoder_elk = null_dep
endif
# Stub decoder.
libintel_decoder_stub = static_library(
'intel_decoder_stub',
[libintel_decoder_stub_files, genX_xml_h, sha1_h],
dependencies : libintel_decoder_stub_deps,
kwargs : libintel_decoder_common_args
)
idep_intel_decoder_stub = declare_dependency(
link_with : [libintel_decoder_stub],
dependencies : libintel_decoder_stub_deps,
)
libintel_decoder_stub_brw = static_library(
'intel_decoder_stub_brw',
[genX_xml_h, sha1_h],
dependencies : idep_intel_decoder_stub,
kwargs : libintel_decoder_common_args
)
idep_intel_decoder_stub_brw = declare_dependency(
link_with : [libintel_decoder_stub_brw],
dependencies : idep_intel_decoder_stub,
)
# Test.
if with_tests and not with_platform_android
gentest_xml = 'tests/gentest.xml'
_name = 'gentest_pack.h'

View file

@ -253,6 +253,9 @@ libanv_common = static_library(
dependencies : anv_deps
)
idep_libvulkan_intel_decoder = (with_mesa_ndebug ?
idep_intel_decoder_stub_brw : idep_intel_decoder_brw)
libvulkan_intel = shared_library(
'vulkan_intel',
[files('anv_gem.c'), anv_entrypoints[0], bvh_spv],
@ -268,7 +271,7 @@ libvulkan_intel = shared_library(
idep_nir, idep_genxml, idep_vulkan_util, idep_vulkan_wsi,
idep_vulkan_runtime, idep_mesautil, idep_xmlconfig,
idep_intel_driver_ds, idep_intel_dev, idep_intel_blorp,
idep_intel_compiler_brw, idep_intel_decoder_brw,
idep_intel_compiler_brw, idep_libvulkan_intel_decoder
],
c_args : anv_flags,
gnu_symbol_visibility : 'hidden',
@ -306,7 +309,7 @@ if with_tests
dep_thread, dep_dl, dep_m, anv_deps,
idep_nir, idep_vulkan_util, idep_vulkan_wsi, idep_vulkan_runtime,
idep_mesautil, idep_intel_dev, idep_intel_blorp,
idep_intel_compiler_brw, idep_intel_decoder_brw,
idep_intel_compiler_brw, idep_libvulkan_intel_decoder,
],
c_args : anv_flags,
gnu_symbol_visibility : 'hidden',