freedreno/decode: Support building replay for multiple KMDs
As `freedreno_kmds` can contain both `msm` and `kgsl`, this case would just produce a build with just KGSL due to the precedence of the check which is inconsistent behavior. Now `replay` is built for all active KMDs with a suffix for the KMD (eg: replay-kgsl/replay-msm). Signed-off-by: Mark Collins <mark@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25005>
This commit is contained in:
@@ -70,34 +70,48 @@ if dep_libarchive.found()
|
||||
build_by_default: false,
|
||||
)
|
||||
|
||||
replay_flags = []
|
||||
replay_deps = []
|
||||
if freedreno_kmds.contains('kgsl')
|
||||
replay_flags += '-DFD_REPLAY_KGSL'
|
||||
else
|
||||
replay_deps += dep_libdrm
|
||||
endif
|
||||
foreach kmd : freedreno_kmds
|
||||
if not (kmd in ['kgsl', 'msm'])
|
||||
warning('replay not supported for ' + kmd + ' KMD')
|
||||
continue
|
||||
endif
|
||||
|
||||
replay = executable(
|
||||
'replay',
|
||||
[
|
||||
'replay.c'
|
||||
],
|
||||
include_directories: [
|
||||
inc_freedreno,
|
||||
inc_include,
|
||||
inc_src,
|
||||
],
|
||||
c_args : [no_override_init_args, replay_flags],
|
||||
gnu_symbol_visibility: 'hidden',
|
||||
dependencies: replay_deps,
|
||||
link_with: [
|
||||
libfreedreno_cffdec,
|
||||
libfreedreno_io,
|
||||
],
|
||||
build_by_default: with_tools.contains('freedreno'),
|
||||
install: install_fd_decode_tools,
|
||||
)
|
||||
# Only append the KMD name if there are multiple KMDs
|
||||
if freedreno_kmds.length() == 1
|
||||
replay_name = 'replay'
|
||||
else
|
||||
replay_name = 'replay-' + kmd
|
||||
endif
|
||||
|
||||
replay_flags = []
|
||||
replay_deps = []
|
||||
if kmd == 'kgsl'
|
||||
replay_flags += '-DFD_REPLAY_KGSL'
|
||||
elif kmd == 'msm'
|
||||
replay_deps += dep_libdrm
|
||||
endif
|
||||
|
||||
replay = executable(
|
||||
replay_name,
|
||||
[
|
||||
'replay.c'
|
||||
],
|
||||
include_directories: [
|
||||
inc_freedreno,
|
||||
inc_include,
|
||||
inc_src,
|
||||
],
|
||||
c_args : [no_override_init_args, replay_flags],
|
||||
gnu_symbol_visibility: 'hidden',
|
||||
dependencies: replay_deps,
|
||||
link_with: [
|
||||
libfreedreno_cffdec,
|
||||
libfreedreno_io,
|
||||
],
|
||||
build_by_default: with_tools.contains('freedreno'),
|
||||
install: install_fd_decode_tools,
|
||||
)
|
||||
endforeach
|
||||
|
||||
rddecompiler = executable(
|
||||
'rddecompiler',
|
||||
|
Reference in New Issue
Block a user