From 5060c51b6f4dfb0d5358bde6523285163d3faaad Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Wed, 25 Oct 2017 18:55:38 -0700 Subject: [PATCH] meson: build r600 driver v4: - Ensure inc_amd_common defined when radeonsi is disabled (needed by r600) Signed-off-by: Dylan Baker Tested-by: Aaron Watry Reviewed-by: Eric Anholt --- meson.build | 22 ++++-- src/amd/common/meson.build | 2 - src/gallium/drivers/r600/meson.build | 128 +++++++++++++++++++++++++++++++++++ src/gallium/meson.build | 6 +- src/gallium/targets/dri/meson.build | 7 +- src/meson.build | 1 + 6 files changed, 155 insertions(+), 11 deletions(-) create mode 100644 src/gallium/drivers/r600/meson.build diff --git a/meson.build b/meson.build index d38fe8a..be727bb 100644 --- a/meson.build +++ b/meson.build @@ -113,6 +113,7 @@ with_gallium = false with_gallium_pl111 = false with_gallium_radeonsi = false with_gallium_r300 = false +with_gallium_r600 = false with_gallium_nouveau = false with_gallium_freedreno = false with_gallium_softpipe = false @@ -126,7 +127,7 @@ if _drivers == 'auto' if not ['darwin', 'windows'].contains(host_machine.system()) # TODO: PPC, Sparc if ['x86', 'x86_64'].contains(host_machine.cpu_family()) - _drivers = 'r300,radeonsi,nouveau,swrast' + _drivers = 'r300,r600,radeonsi,nouveau,swrast' elif ['arm', 'aarch64'].contains(host_machine.cpu_family()) _drivers = 'pl111,vc4,vc5,freedreno,etnaviv,imx,swrast' else @@ -141,6 +142,7 @@ if _drivers != '' with_gallium_pl111 = _split.contains('pl111') with_gallium_radeonsi = _split.contains('radeonsi') with_gallium_r300 = _split.contains('r300') + with_gallium_r600 = _split.contains('r600') with_gallium_nouveau = _split.contains('nouveau') with_gallium_freedreno = _split.contains('freedreno') with_gallium_softpipe = _split.contains('swrast') @@ -702,9 +704,13 @@ dep_thread = dependency('threads') if dep_thread.found() and host_machine.system() != 'windows' pre_args += '-DHAVE_PTHREAD' endif -dep_elf = dependency('libelf', required : false) -if not dep_elf.found() and (with_amd_vk or with_gallium_radeonsi) # TODO: clover, r600 - dep_elf = cc.find_library('elf') +if with_amd_vk or with_gallium_radeonsi or with_gallium_r600 # TODO: clover + dep_elf = dependency('libelf', required : false) + if not dep_elf.found() + dep_elf = cc.find_library('elf') + endif +else + dep_elf = [] endif dep_expat = dependency('expat') # this only exists on linux so either this is linux and it will be found, or @@ -719,7 +725,8 @@ dep_libdrm_freedreno = [] if with_amd_vk or with_gallium_radeonsi dep_libdrm_amdgpu = dependency('libdrm_amdgpu', version : '>= 2.4.88') endif -if with_gallium_radeonsi or with_dri_r100 or with_dri_r200 or with_gallium_r300 +if (with_gallium_radeonsi or with_dri_r100 or with_dri_r200 or + with_gallium_r300 or with_gallium_r600) dep_libdrm_radeon = dependency('libdrm_radeon', version : '>= 2.4.71') endif if with_gallium_nouveau or with_dri_nouveau @@ -733,8 +740,11 @@ if with_gallium_freedreno endif llvm_modules = ['bitwriter', 'engine', 'mcdisassembler', 'mcjit'] -if with_amd_vk or with_gallium_radeonsi +if with_amd_vk or with_gallium_radeonsi or with_gallium_r600 llvm_modules += ['amdgpu', 'bitreader', 'ipo'] + if with_gallium_r600 + llvm_modules += 'asmparser' + endif endif _llvm = get_option('llvm') diff --git a/src/amd/common/meson.build b/src/amd/common/meson.build index 4fd7edc..8c52667 100644 --- a/src/amd/common/meson.build +++ b/src/amd/common/meson.build @@ -18,8 +18,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -inc_amd_common = include_directories('.') - sid_tables_h = custom_target( 'sid_tables_h', input : ['sid_tables.py', 'sid.h', 'gfx9d.h'], diff --git a/src/gallium/drivers/r600/meson.build b/src/gallium/drivers/r600/meson.build new file mode 100644 index 0000000..411b550 --- /dev/null +++ b/src/gallium/drivers/r600/meson.build @@ -0,0 +1,128 @@ +# Copyright © 2017 Intel Corporation + +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: + +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. + +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +files_r600 = files( + 'r600d_common.h', + 'compute_memory_pool.c', + 'compute_memory_pool.h', + 'eg_asm.c', + 'eg_debug.c', + 'eg_sq.h', + 'evergreen_compute.c', + 'evergreen_compute.h', + 'evergreen_compute_internal.h', + 'evergreend.h', + 'evergreen_hw_context.c', + 'evergreen_state.c', + 'r600_asm.c', + 'r600_asm.h', + 'r600_blit.c', + 'r600d.h', + 'r600_formats.h', + 'r600_hw_context.c', + 'r600_isa.c', + 'r600_isa.h', + 'r600_opcodes.h', + 'r600_pipe.c', + 'r600_pipe.h', + 'r600_public.h', + 'r600_shader.c', + 'r600_shader.h', + 'r600_sq.h', + 'r600_state.c', + 'r600_state_common.c', + 'r600_uvd.c', + 'r700_asm.c', + 'r700_sq.h', + 'cayman_msaa.c', + 'r600_buffer_common.c', + 'r600_cs.h', + 'r600_gpu_load.c', + 'r600_perfcounter.c', + 'r600_pipe_common.c', + 'r600_pipe_common.h', + 'r600_query.c', + 'r600_query.h', + 'r600_streamout.c', + 'r600_test_dma.c', + 'r600_texture.c', + 'r600_viewport.c', + 'radeon_uvd.c', + 'radeon_uvd.h', + 'radeon_vce.c', + 'radeon_vce.h', + 'radeon_video.c', + 'radeon_video.h', + 'sb/sb_bc_builder.cpp', + 'sb/sb_bc_decoder.cpp', + 'sb/sb_bc_dump.cpp', + 'sb/sb_bc_finalize.cpp', + 'sb/sb_bc.h', + 'sb/sb_bc_parser.cpp', + 'sb/sb_context.cpp', + 'sb/sb_core.cpp', + 'sb/sb_dce_cleanup.cpp', + 'sb/sb_def_use.cpp', + 'sb/sb_dump.cpp', + 'sb/sb_expr.cpp', + 'sb/sb_expr.h', + 'sb/sb_gcm.cpp', + 'sb/sb_gvn.cpp', + 'sb/sb_if_conversion.cpp', + 'sb/sb_ir.cpp', + 'sb/sb_ir.h', + 'sb/sb_liveness.cpp', + 'sb/sb_pass.cpp', + 'sb/sb_pass.h', + 'sb/sb_peephole.cpp', + 'sb/sb_psi_ops.cpp', + 'sb/sb_public.h', + 'sb/sb_ra_checker.cpp', + 'sb/sb_ra_coalesce.cpp', + 'sb/sb_ra_init.cpp', + 'sb/sb_sched.cpp', + 'sb/sb_sched.h', + 'sb/sb_shader.cpp', + 'sb/sb_shader.h', + 'sb/sb_ssa_builder.cpp', + 'sb/sb_valtable.cpp', +) + +egd_tables_h = custom_target( + 'egd_tables.h', + input : ['egd_tables.py', 'evergreend.h'], + output : 'egd_tables.h', + command : [prog_python2, '@INPUT@'], + capture : true, +) + +# TODO: compute defines + +libr600 = static_library( + 'r600', + [files_r600, egd_tables_h], + c_args : [c_vis_args], + cpp_args : [cpp_vis_args], + include_directories : [ + inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_amd_common, + inc_gallium_drivers, + ], + dependencies: [dep_libdrm_radeon, dep_elf, dep_llvm], +) diff --git a/src/gallium/meson.build b/src/gallium/meson.build index dd3b9f3..cfb784c5 100644 --- a/src/gallium/meson.build +++ b/src/gallium/meson.build @@ -37,12 +37,15 @@ if with_gallium_softpipe subdir('drivers/llvmpipe') endif endif -if with_gallium_r300 or with_gallium_radeonsi +if with_gallium_r300 or with_gallium_radeonsi or with_gallium_r600 subdir('winsys/radeon/drm') endif if with_gallium_r300 subdir('drivers/r300') endif +if with_gallium_r600 + subdir('drivers/r600') +endif if with_gallium_radeonsi subdir('drivers/radeon') subdir('drivers/radeonsi') @@ -89,7 +92,6 @@ if with_glx == 'gallium-xlib' subdir('state_trackers/glx/xlib') endif # TODO: SVGA -# TODO: r600 # TODO: SWR # TODO: virgl # TODO: clover diff --git a/src/gallium/targets/dri/meson.build b/src/gallium/targets/dri/meson.build index 88aae56..8bcef80 100644 --- a/src/gallium/targets/dri/meson.build +++ b/src/gallium/targets/dri/meson.build @@ -117,8 +117,13 @@ if with_gallium_r300 gallium_dri_link_with += libr300 gallium_dri_drivers += 'r300_dri.so' endif +if with_gallium_r600 + gallium_dri_c_args += '-DGALLIUM_R600' + gallium_dri_link_with += libr600 + gallium_dri_drivers += 'r600_dri.so' +endif -if with_gallium_radeonsi or with_gallium_r300 # TODO: r600 +if with_gallium_radeonsi or with_gallium_r300 or with_gallium_r600 gallium_dri_link_with += libradeonwinsys endif diff --git a/src/meson.build b/src/meson.build index db36866..043a81b 100644 --- a/src/meson.build +++ b/src/meson.build @@ -25,6 +25,7 @@ inc_mapi = include_directories('mapi') inc_src = include_directories('.') inc_gallium = include_directories('gallium/include') inc_gallium_aux = include_directories('gallium/auxiliary') +inc_amd_common = include_directories('amd/common') libglsl_util = static_library( 'glsl_util', -- 2.7.4