diff --git a/docs/drivers/freedreno.rst b/docs/drivers/freedreno.rst index b842327834a..77b87685710 100644 --- a/docs/drivers/freedreno.rst +++ b/docs/drivers/freedreno.rst @@ -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. diff --git a/src/freedreno/decode/generate-rd.cc b/src/freedreno/decode/generate-rd.cc new file mode 100644 index 00000000000..89c144fbe56 --- /dev/null +++ b/src/freedreno/decode/generate-rd.cc @@ -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; +} \ No newline at end of file diff --git a/src/freedreno/decode/meson.build b/src/freedreno/decode/meson.build index 56f4b4c75fe..0f31fc92f1a 100644 --- a/src/freedreno/decode/meson.build +++ b/src/freedreno/decode/meson.build @@ -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 diff --git a/src/freedreno/decode/rdcompiler-meson.build b/src/freedreno/decode/rdcompiler-meson.build deleted file mode 100644 index 79fdd90da84..00000000000 --- a/src/freedreno/decode/rdcompiler-meson.build +++ /dev/null @@ -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'), - ], -) \ No newline at end of file