[Mesa-dev] [PATCH 04/13] meson: build r600 driver
Dylan Baker
dylan at pnwbakers.com
Wed Nov 1 22:49:39 UTC 2017
Signed-off-by: Dylan Baker <dylanx.c.baker at intel.com>
Tested-by: Aaron Watry <awatry at gmail.com>
---
meson.build | 20 ++++--
meson_options.txt | 2 +-
src/gallium/drivers/r600/meson.build | 128 +++++++++++++++++++++++++++++++++++
src/gallium/meson.build | 4 +-
src/gallium/targets/dri/meson.build | 7 +-
5 files changed, 153 insertions(+), 8 deletions(-)
create mode 100644 src/gallium/drivers/r600/meson.build
diff --git a/meson.build b/meson.build
index daa07330f12..1b7972c97e3 100644
--- a/meson.build
+++ b/meson.build
@@ -105,6 +105,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
@@ -119,6 +120,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')
@@ -630,9 +632,13 @@ dep_thread = dependency('threads')
if dep_thread.found() and host_machine.system() == 'linux'
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
@@ -647,7 +653,8 @@ dep_libdrm_freedreno = []
if with_amd_vk or with_gallium_radeonsi
dep_libdrm_amdgpu = dependency('libdrm_amdgpu', version : '>= 2.4.86')
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
@@ -661,8 +668,11 @@ if with_gallium_freedreno
endif
llvm_modules = ['bitwriter', 'engine', 'mcdisassembler', 'mcjit']
-if with_amd_vk or with_gallium_radeonsi # TODO: r600
+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
dep_llvm = dependency(
'llvm', version : '>= 3.9.0', required : with_amd_vk, modules : llvm_modules,
diff --git a/meson_options.txt b/meson_options.txt
index eca431edd95..2d21a10425f 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -46,7 +46,7 @@ option(
option(
'gallium-drivers',
type : 'string',
- value : 'pl111,radeonsi,nouveau,freedreno,swrast,vc4,etnaviv,imx,r300',
+ value : 'pl111,radeonsi,nouveau,freedreno,swrast,vc4,etnaviv,imx,r300,r600',
description : 'comma separated list of gallium drivers to build.'
)
option(
diff --git a/src/gallium/drivers/r600/meson.build b/src/gallium/drivers/r600/meson.build
new file mode 100644
index 00000000000..411b550331d
--- /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 15fe86ff6db..3ff7b994956 100644
--- a/src/gallium/meson.build
+++ b/src/gallium/meson.build
@@ -47,6 +47,9 @@ endif
if with_gallium_r300
subdir('drivers/r300')
endif
+if with_gallium_r600
+ subdir('drivers/r600')
+endif
subdir('drivers/llvmpipe')
subdir('winsys/sw/null')
subdir('winsys/sw/dri')
@@ -79,7 +82,6 @@ if with_osmesa == 'gallium'
subdir('state_trackers/osmesa')
endif
# TODO: SVGA
-# TODO: r600
# TODO: SWR
# TODO: virgl
# TODO: winsys/sw/xlib
diff --git a/src/gallium/targets/dri/meson.build b/src/gallium/targets/dri/meson.build
index 4fc1a841130..685995c1dcf 100644
--- a/src/gallium/targets/dri/meson.build
+++ b/src/gallium/targets/dri/meson.build
@@ -116,8 +116,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
--
2.14.3
More information about the mesa-dev
mailing list