I have tested this, and as of v2 it actually works. I'll update the commitment message.
Dylan On September 23, 2017 8:39:06 AM PDT, Dylan Baker <dy...@pnwbakers.com> wrote: >This builds and installs, but I haven't had a chance to test it yet. > >v2: - enable radv by default > - add shader cache support and enforce that it's built for radv > >Signed-off-by: Dylan Baker <dylanx.c.ba...@intel.com> >--- > meson.build | 27 ++++++++- > meson_options.txt | 4 +- > src/{ => amd/addrlib}/meson.build | 69 ++++++++++++--------- > src/{ => amd/common}/meson.build | 65 ++++++++++++-------- > src/{ => amd}/meson.build | 33 ++-------- >src/amd/vulkan/meson.build | 124 >++++++++++++++++++++++++++++++++++++++ > src/meson.build | 2 +- > 7 files changed, 240 insertions(+), 84 deletions(-) > copy src/{ => amd/addrlib}/meson.build (51%) > copy src/{ => amd/common}/meson.build (51%) > copy src/{ => amd}/meson.build (65%) > create mode 100644 src/amd/vulkan/meson.build > >diff --git a/meson.build b/meson.build >index 09e53957fe9..0b3e6f61545 100644 >--- a/meson.build >+++ b/meson.build >@@ -71,6 +71,12 @@ if get_option('buildtype').startswith('debug') > pre_args += '-DDEBUG' > endif > >+if get_option('shader-cache') >+ pre_args += '-DENABLE_SHADER_CACHE' >+elif with_amd_vk >+ error('Radv requires shader cache support') >+endif >+ > # Check for GCC style builtins >foreach b : ['bswap32', 'bswap64', 'clz', 'clzll', 'ctz', 'expect', >'ffs', > 'ffsll', 'popcount', 'popcountll', 'unreachable'] >@@ -79,7 +85,7 @@ foreach b : ['bswap32', 'bswap64', 'clz', 'clzll', >'ctz', 'expect', 'ffs', > endif > endforeach > >-# check for GCC __attribute__ s >+# check for GCC __attribute__ > foreach a : ['const', 'flatten', 'malloc', 'pure', 'unused', > 'warn_unused_result', 'weak',] > if cc.compiles('int foo(void) __attribute__((@0@));'.format(a), >@@ -291,6 +297,23 @@ dep_m = cc.find_library('m', required : false) > # TODO: conditionalize libdrm requirement > dep_libdrm = dependency('libdrm', version : '>= 2.4.75') > pre_args += '-DHAVE_LIBDRM' >+dep_libdrm_amdgpu = [] >+if with_amd_vk >+ dep_libdrm_amdgpu = dependency('libdrm_amdgpu', version : '>= >2.4.82') >+endif >+ >+dep_llvm = dependency('llvm', version : '>= 3.9.0', required : false) >+if not dep_llvm.found() >+ if with_amd_vk >+ error('Radv requires llvm.') >+ endif >+else >+ _llvm_version = dep_llvm.version().split('.') >+ pre_args += [ >+ '-DHAVE_LLVM=0x0@0@@1@@2@'.format(_llvm_version[0], >_llvm_version[1], _llvm_version[2]), >+ '-DMESA_LLVM_VERSION_PATCH=@0@'.format(_llvm_version[2]), >+ ] >+endif > > # TODO: make this conditional > dep_valgrind = dependency('valgrind', required : false) >@@ -304,8 +327,6 @@ endif > > # TODO: llvm-prefix and llvm-shared-libs > >-# TODO: llvm dependency (that's all native now, yay!) >- > # TODO: unwind (llvm [radeon, gallivm] and gallium) > > # TODO: flags for opengl, gles, dri >diff --git a/meson_options.txt b/meson_options.txt >index e52cec31f11..854cba851d7 100644 >--- a/meson_options.txt >+++ b/meson_options.txt >@@ -20,8 +20,10 @@ > > option('platforms', type : 'string', value : 'x11,wayland', >description : 'comma separated list of window systems to support. >wayland, x11, surfaceless, drm, etc.') >-option('vulkan-drivers', type : 'string', value : 'intel', >+option('vulkan-drivers', type : 'string', value : 'intel,amd', > description : 'comma separated list of vulkan drivers to build.') >+option('shader-cache', type : 'boolean', vaule : true, >+ description : 'Build with on-disk shader cache support') > option('vulkan_icd_dir', type : 'string', value : '', >description : 'Location relative to prefix to put vulkan icds on >install. Default: $datadir/vulkan/icd.d') > option('valgrind', type : 'boolean', vaule : true, >diff --git a/src/meson.build b/src/amd/addrlib/meson.build >similarity index 51% >copy from src/meson.build >copy to src/amd/addrlib/meson.build >index 4c82eec70f1..a6cad1207b0 100644 >--- a/src/meson.build >+++ b/src/amd/addrlib/meson.build >@@ -18,31 +18,46 @@ ># OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER >DEALINGS IN THE > # SOFTWARE. > >-# TODO: libglsl_util >+files_addrlib = files( >+ 'addrinterface.cpp', >+ 'addrinterface.h', >+ 'addrtypes.h', >+ 'core/addrcommon.h', >+ 'core/addrelemlib.cpp', >+ 'core/addrelemlib.h', >+ 'core/addrlib.cpp', >+ 'core/addrlib.h', >+ 'core/addrlib1.cpp', >+ 'core/addrlib1.h', >+ 'core/addrlib2.cpp', >+ 'core/addrlib2.h', >+ 'core/addrobject.cpp', >+ 'core/addrobject.h', >+ 'gfx9/chip/gfx9_enum.h', >+ 'gfx9/coord.cpp', >+ 'gfx9/coord.h', >+ 'gfx9/gfx9addrlib.cpp', >+ 'gfx9/gfx9addrlib.h', >+ 'gfx9/rbmap.cpp', >+ 'gfx9/rbmap.h', >+ 'inc/chip/gfx9/gfx9_gb_reg.h', >+ 'inc/chip/r800/si_gb_reg.h', >+ 'inc/lnx_common_defs.h', >+ 'r800/chip/si_ci_vi_merged_enum.h', >+ 'r800/ciaddrlib.cpp', >+ 'r800/ciaddrlib.h', >+ 'r800/egbaddrlib.cpp', >+ 'r800/egbaddrlib.h', >+ 'r800/siaddrlib.cpp', >+ 'r800/siaddrlib.h', >+) > >-# TODO: git_sha. There's a meson builtin for this >- >-inc_common = include_directories( >- '../include', '.', 'mapi', 'mesa', 'gallium/include', >'gallium/auxiliary') >-inc_mesa = include_directories('mesa') >-inc_mapi = include_directories('mapi') >- >-subdir('gtest') >-subdir('util') >-#subdir('mapi/glapi/gen') >-# TODO: mapi >-# TODO: opengl >-# TODO: glx >-# TODO: osmesa >-subdir('compiler') >-subdir('egl/wayland/wayland-drm') >-subdir('vulkan') >-# TODO: amd >-subdir('intel') >-# TODO: vc4 >-# TODO: opengl_common >-# TODO: dri_glx >-# TODO: gbm >-# TODO: egl >-# TODO: radv >-# TODO: gallium >+libamdgpu_addrlib = static_library( >+ 'addrlib', >+ files_addrlib, >+ include_directories : include_directories( >+ 'core', 'inc/chip/gfx9', 'inc/chip/r800', 'gfx9/chip', >'r800/chip', >+ '../common', '../../'), >+ cpp_args : [cpp_vis_args, '-DBRAHMA_BUILD=1'], >+ build_by_default : false, >+) >diff --git a/src/meson.build b/src/amd/common/meson.build >similarity index 51% >copy from src/meson.build >copy to src/amd/common/meson.build >index 4c82eec70f1..842b42f897e 100644 >--- a/src/meson.build >+++ b/src/amd/common/meson.build >@@ -18,31 +18,46 @@ ># OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER >DEALINGS IN THE > # SOFTWARE. > >-# TODO: libglsl_util >+inc_amd_common = include_directories('.') > >-# TODO: git_sha. There's a meson builtin for this >+sid_tables_h = custom_target( >+ 'sid_tables_h', >+ input : ['sid_tables.py', 'sid.h', 'gfx9d.h'], >+ output : 'sid_tables.h', >+ command : [prog_python2, '@INPUT@'], >+ capture : true, >+) > >-inc_common = include_directories( >- '../include', '.', 'mapi', 'mesa', 'gallium/include', >'gallium/auxiliary') >-inc_mesa = include_directories('mesa') >-inc_mapi = include_directories('mapi') >+amd_common_files = files( >+ 'ac_binary.c', >+ 'ac_binary.h', >+ 'ac_exp_param.h', >+ 'ac_llvm_build.c', >+ 'ac_llvm_build.h', >+ 'ac_llvm_helper.cpp', >+ 'ac_llvm_util.c', >+ 'ac_llvm_util.h', >+ 'ac_shader_abi.h', >+ 'ac_shader_info.c', >+ 'ac_shader_info.h', >+ 'ac_nir_to_llvm.c', >+ 'ac_nir_to_llvm.h', >+ 'ac_gpu_info.c', >+ 'ac_gpu_info.h', >+ 'ac_surface.c', >+ 'ac_surface.h', >+ 'ac_debug.c', >+ 'ac_debug.h', >+) > >-subdir('gtest') >-subdir('util') >-#subdir('mapi/glapi/gen') >-# TODO: mapi >-# TODO: opengl >-# TODO: glx >-# TODO: osmesa >-subdir('compiler') >-subdir('egl/wayland/wayland-drm') >-subdir('vulkan') >-# TODO: amd >-subdir('intel') >-# TODO: vc4 >-# TODO: opengl_common >-# TODO: dri_glx >-# TODO: gbm >-# TODO: egl >-# TODO: radv >-# TODO: gallium >+libamd_common = static_library( >+ 'amd_common', >+ [amd_common_files, sid_tables_h, nir_opcodes_h], >+ include_directories : [inc_common, inc_compiler, inc_nir, inc_mesa, >inc_mapi, >+ inc_amd], >+ dependencies : [dep_llvm, dep_thread, dep_elf, dep_libdrm_amdgpu, >+ dep_valgrind], >+ c_args : [c_vis_args], >+ cpp_args : [cpp_vis_args], >+ build_by_default : false, >+) >diff --git a/src/meson.build b/src/amd/meson.build >similarity index 65% >copy from src/meson.build >copy to src/amd/meson.build >index 4c82eec70f1..f96a9aac095 100644 >--- a/src/meson.build >+++ b/src/amd/meson.build >@@ -18,31 +18,10 @@ ># OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER >DEALINGS IN THE > # SOFTWARE. > >-# TODO: libglsl_util >+inc_amd = include_directories('.') > >-# TODO: git_sha. There's a meson builtin for this >- >-inc_common = include_directories( >- '../include', '.', 'mapi', 'mesa', 'gallium/include', >'gallium/auxiliary') >-inc_mesa = include_directories('mesa') >-inc_mapi = include_directories('mapi') >- >-subdir('gtest') >-subdir('util') >-#subdir('mapi/glapi/gen') >-# TODO: mapi >-# TODO: opengl >-# TODO: glx >-# TODO: osmesa >-subdir('compiler') >-subdir('egl/wayland/wayland-drm') >-subdir('vulkan') >-# TODO: amd >-subdir('intel') >-# TODO: vc4 >-# TODO: opengl_common >-# TODO: dri_glx >-# TODO: gbm >-# TODO: egl >-# TODO: radv >-# TODO: gallium >+subdir('addrlib') >+subdir('common') >+if with_amd_vk >+ subdir('vulkan') >+endif >diff --git a/src/amd/vulkan/meson.build b/src/amd/vulkan/meson.build >new file mode 100644 >index 00000000000..02a2703a5c1 >--- /dev/null >+++ b/src/amd/vulkan/meson.build >@@ -0,0 +1,124 @@ >+# 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. >+ >+radv_entrypoints = custom_target( >+ 'radv_entrypoints.[ch]', >+ input : ['radv_entrypoints_gen.py', vk_api_xml], >+ output : ['radv_entrypoints.h', 'radv_entrypoints.c'], >+ command : [prog_python2, '@INPUT0@', '--xml', '@INPUT1@', >+ '--outdir', meson.current_build_dir()], >+) >+ >+vk_format_table_c = custom_target( >+ 'vk_format_table.c', >+ input : ['vk_format_table.py', 'vk_format_layout.csv'], >+ output : 'vk_format_table.c', >+ command : [prog_python2, '@INPUT@'], >+ depend_files : files('vk_format_parse.py'), >+ capture : true, >+) >+ >+libradv_files = files( >+ 'winsys/amdgpu/radv_amdgpu_bo.c', >+ 'winsys/amdgpu/radv_amdgpu_bo.h', >+ 'winsys/amdgpu/radv_amdgpu_cs.c', >+ 'winsys/amdgpu/radv_amdgpu_cs.h', >+ 'winsys/amdgpu/radv_amdgpu_surface.c', >+ 'winsys/amdgpu/radv_amdgpu_surface.h', >+ 'winsys/amdgpu/radv_amdgpu_winsys.c', >+ 'winsys/amdgpu/radv_amdgpu_winsys.h', >+ 'winsys/amdgpu/radv_amdgpu_winsys_public.h', >+ 'radv_cmd_buffer.c', >+ 'radv_cs.h', >+ 'radv_debug.c', >+ 'radv_debug.h', >+ 'radv_device.c', >+ 'radv_descriptor_set.c', >+ 'radv_descriptor_set.h', >+ 'radv_formats.c', >+ 'radv_image.c', >+ 'radv_meta.c', >+ 'radv_meta.h', >+ 'radv_meta_blit.c', >+ 'radv_meta_blit2d.c', >+ 'radv_meta_buffer.c', >+ 'radv_meta_bufimage.c', >+ 'radv_meta_clear.c', >+ 'radv_meta_copy.c', >+ 'radv_meta_decompress.c', >+ 'radv_meta_fast_clear.c', >+ 'radv_meta_resolve.c', >+ 'radv_meta_resolve_cs.c', >+ 'radv_meta_resolve_fs.c', >+ 'radv_pass.c', >+ 'radv_pipeline.c', >+ 'radv_pipeline_cache.c', >+ 'radv_private.h', >+ 'radv_radeon_winsys.h', >+ 'radv_shader.c', >+ 'radv_shader.h', >+ 'radv_query.c', >+ 'radv_util.c', >+ 'radv_util.h', >+ 'radv_wsi.c', >+ 'si_cmd_buffer.c', >+ 'vk_format.h', >+) >+ >+radv_deps = [] >+radv_flags = [] >+ >+if with_platform_x11 >+ radv_deps += dep_xcb_dri3 >+ radv_flags += [ >+ '-DVK_USE_PLATFORM_XCB_KHR', >+ '-DVK_USE_PLATFORM_XLIB_KHR', >+ ] >+ libradv_files += files('radv_wsi_x11.c') >+endif >+ >+if with_platform_wayland >+ radv_deps += dep_wayland_client >+ radv_flags += '-DVK_USE_PLATFORM_WAYLAND_KHR' >+ libradv_files += files('radv_wsi_wayland.c') >+endif >+ >+libvulkan_radeon = shared_library( >+ 'vulkan_radeon', >+ [libradv_files, radv_entrypoints, nir_opcodes_h, vk_format_table_c], >+ include_directories : [inc_common, inc_amd, inc_amd_common, >inc_compiler, >+ inc_vulkan_util, inc_vulkan_wsi], >+ link_with : [libamd_common, libamdgpu_addrlib, libvulkan_util, >+ libvulkan_wsi, libnir, libmesa_util], >+ dependencies : [dep_llvm, dep_libdrm_amdgpu, dep_thread, dep_elf, >dep_dl, >+ dep_m, dep_valgrind], >+ c_args : [c_vis_args, no_override_init_args, radv_flags], >+ link_args : [ld_args_bsymbolic, ld_args_gc_sections], >+ install : true, >+) >+ >+radv_data = configuration_data() >+radv_data.set('install_libdir', join_paths(get_option('prefix'), >get_option('libdir'))) >+configure_file( >+ configuration : radv_data, >+ input : 'radeon_icd.json.in', >+ output : 'radeon_icd.@0@.json'.format(target_machine.cpu()), >+ install_dir : with_vulkan_icd_dir, >+) >diff --git a/src/meson.build b/src/meson.build >index 4c82eec70f1..76ff497e565 100644 >--- a/src/meson.build >+++ b/src/meson.build >@@ -37,7 +37,7 @@ subdir('util') > subdir('compiler') > subdir('egl/wayland/wayland-drm') > subdir('vulkan') >-# TODO: amd >+subdir('amd') > subdir('intel') > # TODO: vc4 > # TODO: opengl_common _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev