From de24d61765011ed4bfc169b8ad8cf67e86b1f3bd Mon Sep 17 00:00:00 2001 From: Dylan Baker Date: Tue, 10 Oct 2017 14:27:19 -0700 Subject: [PATCH] meson: build softpipe This doesn't include llvmpipe. v2: - Fix inconsistent use of with_gallium_swrast and with_gallium_softpipe. Signed-off-by: Dylan Baker Reviewed-by: Eric Anholt --- meson.build | 5 ++ meson_options.txt | 4 +- src/gallium/drivers/softpipe/meson.build | 85 ++++++++++++++++++++++++ src/gallium/meson.build | 2 +- src/gallium/targets/dri/meson.build | 8 +++ 5 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 src/gallium/drivers/softpipe/meson.build diff --git a/meson.build b/meson.build index ff5666c207e..e96dc864986 100644 --- a/meson.build +++ b/meson.build @@ -99,6 +99,7 @@ if _drivers != '' _split = _drivers.split(',') with_gallium_radeonsi = _split.contains('radeonsi') with_gallium_nouveau = _split.contains('nouveau') + with_gallium_softpipe = _split.contains('swrast') with_gallium = true with_dri = true endif @@ -111,6 +112,10 @@ if not (with_dri or with_gallium) with_shared_glapi = false endif +if with_dri_swrast and with_gallium_softpipe + error('Only one swrast provider can be built') +endif + dep_libdrm_intel = [] if with_dri_i915 dep_libdrm_intel = dependency('libdrm_intel', version : '>= 2.4.75') diff --git a/meson_options.txt b/meson_options.txt index c3f8ddc7980..d7304ab664c 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -22,11 +22,11 @@ option('platforms', type : 'string', value : 'x11,wayland,drm', description : 'comma separated list of window systems to support. wayland, x11, surfaceless, drm, etc.') option('dri3', type : 'combo', value : 'auto', choices : ['auto', 'yes', 'no'], description : 'enable support for dri3') -option('dri-drivers', type : 'string', value : 'swrast,i915,i965', +option('dri-drivers', type : 'string', value : 'i915,i965', description : 'comma separated list of dri drivers to build.') option('dri-drivers-path', type : 'string', value : '', description : 'Location of dri drivers. Default: $libdir/dri.') -option('gallium-drivers', type : 'string', value : 'radeonsi,nouveau', +option('gallium-drivers', type : 'string', value : 'radeonsi,nouveau,swrast', description : 'comma separated list of gallium drivers to build.') option('gallium-media', type : 'string', value : '', description : 'comma separated list of gallium media APIs to build (omx,va,vdpau,xvmc).') diff --git a/src/gallium/drivers/softpipe/meson.build b/src/gallium/drivers/softpipe/meson.build new file mode 100644 index 00000000000..0cef15152e2 --- /dev/null +++ b/src/gallium/drivers/softpipe/meson.build @@ -0,0 +1,85 @@ +# 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_softpipe = files( + 'sp_buffer.c', + 'sp_buffer.h', + 'sp_clear.c', + 'sp_clear.h', + 'sp_context.c', + 'sp_context.h', + 'sp_compute.c', + 'sp_draw_arrays.c', + 'sp_fence.c', + 'sp_fence.h', + 'sp_flush.c', + 'sp_flush.h', + 'sp_fs_exec.c', + 'sp_fs.h', + 'sp_image.c', + 'sp_image.h', + 'sp_limits.h', + 'sp_prim_vbuf.c', + 'sp_prim_vbuf.h', + 'sp_public.h', + 'sp_quad_blend.c', + 'sp_quad_depth_test.c', + 'sp_quad_depth_test_tmp.h', + 'sp_quad_fs.c', + 'sp_quad.h', + 'sp_quad_pipe.c', + 'sp_quad_pipe.h', + 'sp_quad_stipple.c', + 'sp_query.c', + 'sp_query.h', + 'sp_screen.c', + 'sp_screen.h', + 'sp_setup.c', + 'sp_setup.h', + 'sp_state_blend.c', + 'sp_state_clip.c', + 'sp_state_derived.c', + 'sp_state_image.c', + 'sp_state.h', + 'sp_state_rasterizer.c', + 'sp_state_sampler.c', + 'sp_state_shader.c', + 'sp_state_so.c', + 'sp_state_surface.c', + 'sp_state_vertex.c', + 'sp_surface.c', + 'sp_surface.h', + 'sp_tex_sample.c', + 'sp_tex_sample.h', + 'sp_tex_tile_cache.c', + 'sp_tex_tile_cache.h', + 'sp_texture.c', + 'sp_texture.h', + 'sp_tile_cache.c', + 'sp_tile_cache.h', +) + +libsoftpipe = static_library( + 'softpipe', + files_softpipe, + include_directories : [inc_gallium_aux, inc_gallium, inc_include, inc_src], + c_args : [c_vis_args, c_msvc_compat_args], + build_by_default : false, +) diff --git a/src/gallium/meson.build b/src/gallium/meson.build index 42c05824991..ea7f1d2ef64 100644 --- a/src/gallium/meson.build +++ b/src/gallium/meson.build @@ -31,6 +31,7 @@ subdir('drivers/rbug') subdir('drivers/radeon') subdir('drivers/radeonsi') subdir('drivers/nouveau') +subdir('drivers/softpipe') subdir('winsys/sw/null') subdir('winsys/sw/dri') subdir('winsys/sw/kms-dri') @@ -47,7 +48,6 @@ subdir('state_trackers/dri') # TODO: etnaviv # TODO: IMX # TODO: PL111 -# TODO: softpipe # TODO: llvmpipe # TODO: SWR # TODO: vc4 diff --git a/src/gallium/targets/dri/meson.build b/src/gallium/targets/dri/meson.build index 771a38d3214..2601f151f0e 100644 --- a/src/gallium/targets/dri/meson.build +++ b/src/gallium/targets/dri/meson.build @@ -64,6 +64,14 @@ if with_gallium_nouveau gallium_dri_link_with += [libnouveauwinsys, libnouveau] gallium_dri_drivers += 'nouveau_dri.so' endif +if with_gallium_softpipe + gallium_dri_c_args += '-DGALLIUM_SOFTPIPE' + gallium_dri_link_with += libsoftpipe + gallium_dri_drivers += 'swrast_dri.so' + if with_gallium_drisw_kms + gallium_dri_drivers += 'kms_swrast_dri.so' + endif +endif libgallium_dri = shared_library( 'gallium_dri', -- 2.30.2