[Mesa-dev] [PATCH 5/7] meson: build r600
Dylan Baker
dylan at pnwbakers.com
Tue Oct 31 17:48:54 UTC 2017
I would be grateful if you would give r300 a whirl. I do have patches that are
almost ready for the gallium media state trackers (just needs a little polish,
and some testing). Clover will be the next thing on my list after the media
stuff.
Dylan
Quoting Aaron Watry (2017-10-30 20:47:21)
> Hi Dylan,
>
> I took a crack at testing this one. My BARTS (Radeon 6850) seems to
> be running through piglit with a reasonable pass-rate afterwards, a
> restart of GDM/gnome went fine, and at least xonotic launched and is
> running.
>
> I did attempt to build it with vdpau/va gallium-media api support (as
> defined in meson_options.txt), but that doesn't seem to be getting
> built (From the TODO's in src/gallium/meson.build, I see that's still
> pending). I also noticed that there's still TODO items for the clover
> state tracker. Once we add clover support, the r600g driver will need
> an LLVM dependency when that state tracker is enabled, as well...
>
> I did end up having to do some mild rebasing of this patch on top of
> current master, but it was pretty trivial.
>
> That being said, this patch seems to be working as intended, so you can add:
> Tested-by: Aaron Watry <awatry at gmail.com>
>
> If you want, I can dig an r300-based card out of the closet and give
> that a whirl as well, but I won't bother unless you need me to.
>
> --Aaron
>
> On Thu, Oct 26, 2017 at 6:57 PM, Dylan Baker <dylan at pnwbakers.com> wrote:
> > This has been build tested only.
> >
> > Signed-off-by: Dylan Baker <dylanx.c.baker at intel.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 a03da18659e..3aa4cbfddc4 100644
> > --- a/meson.build
> > +++ b/meson.build
> > @@ -107,6 +107,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
> > @@ -121,6 +122,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')
> > @@ -623,9 +625,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
> > @@ -640,7 +646,8 @@ dep_libdrm_freedreno = []
> > if with_amd_vk or with_gallium_radeonsi
> > dep_libdrm_amdgpu = dependency('libdrm_amdgpu', version : '>= 2.4.85')
> > 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
> > @@ -654,8 +661,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 6ac22600ceb..b811fda0dc1 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 05bffc19119..da8db5a36f2 100644
> > --- a/src/gallium/meson.build
> > +++ b/src/gallium/meson.build
> > @@ -48,6 +48,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')
> > @@ -77,7 +80,6 @@ if with_gallium_i915
> > endif
> > subdir('state_trackers/dri')
> > # 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.2
> >
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> >
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171031/c8d360fa/attachment.sig>
More information about the mesa-dev
mailing list