fd/decode: Build generate_rd executable rather
A seperate meson project with mesa as a subproject was required to compile the generate_rd executable for replaying rddecompiler generated source. That approach was overly complicated, now the generate_rd executable is now compiled as a part of building the freedreno tools with a blank generate-rd.cc file that can be replaced with the source generated by rddecompiler. Signed-off-by: Mark Collins <mark@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28253>
This commit is contained in:
@@ -467,7 +467,7 @@ Given the address space bounds the generated program creates a new ``rd`` which
|
||||
could be used to override cmdstream with 'replay'. Generated ``rd`` is not replayable
|
||||
on its own and depends on buffers provided by the source ``rd``.
|
||||
|
||||
C source could be compiled using rdcompiler-meson.build as an example.
|
||||
C source could be compiled by putting it into src/freedreno/decode/generate-rd.cc.
|
||||
|
||||
The workflow would look like this:
|
||||
|
||||
@@ -476,15 +476,15 @@ The workflow would look like this:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
./rddecompiler -s %cmd_stream_n% example.rd > generate_rd.c
|
||||
./rddecompiler -s %cmd_stream_n% example.rd > src/freedreno/decode/generate-rd.cc
|
||||
|
||||
3. Edit the command stream;
|
||||
4. Compile it back, see rdcompiler-meson.build for the instructions;
|
||||
3. Edit the command stream;;
|
||||
4. Compile and deploy freedreno tools;
|
||||
5. Plug the generator into cmdstream replay:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
./replay --override=%cmd_stream_№% --generator=~/generate_rd
|
||||
./replay --override=%cmd_stream_№% --generator=generate_rd
|
||||
|
||||
6. Repeat 3-5.
|
||||
|
||||
|
7
src/freedreno/decode/generate-rd.cc
Normal file
7
src/freedreno/decode/generate-rd.cc
Normal file
@@ -0,0 +1,7 @@
|
||||
/* This is a placeholder file that should be replaced with the contents
|
||||
* generated by the rddecompiler from a trace file.
|
||||
*/
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
return 1;
|
||||
}
|
@@ -140,6 +140,26 @@ if dep_libarchive.found()
|
||||
build_by_default: with_tools.contains('freedreno'),
|
||||
install: install_fd_decode_tools,
|
||||
)
|
||||
|
||||
generate_rd = executable(
|
||||
'generate_rd',
|
||||
[
|
||||
'generate-rd.cc'
|
||||
],
|
||||
include_directories: [
|
||||
inc_freedreno,
|
||||
inc_freedreno_rnn,
|
||||
inc_include,
|
||||
inc_src,
|
||||
],
|
||||
link_with: [
|
||||
libfreedreno_cffdec,
|
||||
],
|
||||
dependencies : [
|
||||
idep_nir,
|
||||
],
|
||||
install: install_fd_decode_tools,
|
||||
)
|
||||
else
|
||||
warning('libarchive not found, not building replay or rddecompiler')
|
||||
endif
|
||||
|
@@ -1,44 +0,0 @@
|
||||
# An example meson.build for .rd decompiled into C source via rddecompiler.
|
||||
# It uses Mesa as a subproject since the generated sources depend on
|
||||
# generated headers with registers info and on some utils.
|
||||
# Before compiling, create "subprojects" directory and create a link
|
||||
# to mesa there.
|
||||
|
||||
project('generate_rd', ['c', 'cpp'], default_options : ['c_std=c11', 'cpp_std=c++17'])
|
||||
|
||||
mesa_options = ['gallium-drivers=',
|
||||
'vulkan-drivers=',
|
||||
'glx=disabled',
|
||||
'tools=freedreno']
|
||||
|
||||
if host_machine.system() == 'android'
|
||||
mesa_options += ['platforms=android',
|
||||
'platform-sdk-version=28',
|
||||
'android-stub=true']
|
||||
endif
|
||||
|
||||
mesa_proj = subproject('mesa', default_options : mesa_options)
|
||||
|
||||
add_project_arguments(mesa_proj.get_variable('pre_args'), language : ['c', 'cpp'])
|
||||
add_project_arguments(mesa_proj.get_variable('c_args'), language : ['c'])
|
||||
add_project_arguments(mesa_proj.get_variable('c_cpp_args'), language : ['c', 'cpp'])
|
||||
add_project_arguments(mesa_proj.get_variable('cpp_args'), language : ['cpp'])
|
||||
|
||||
generate_rd = executable(
|
||||
'generate_rd',
|
||||
[
|
||||
'generate_rd.cc'
|
||||
],
|
||||
include_directories: [
|
||||
mesa_proj.get_variable('inc_freedreno'),
|
||||
mesa_proj.get_variable('inc_freedreno_rnn'),
|
||||
mesa_proj.get_variable('inc_include'),
|
||||
mesa_proj.get_variable('inc_src'),
|
||||
],
|
||||
link_with: [
|
||||
mesa_proj.get_variable('libfreedreno_cffdec'),
|
||||
],
|
||||
dependencies : [
|
||||
mesa_proj.get_variable('idep_nir'),
|
||||
],
|
||||
)
|
Reference in New Issue
Block a user