You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
218 lines
5.3 KiB
218 lines
5.3 KiB
#############################################################################
|
|
#
|
|
# Copyright (C) 2019 Collabora Ltd
|
|
#
|
|
# 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.
|
|
#
|
|
|
|
subdir('mesa')
|
|
subdir('gallium')
|
|
|
|
virgl_sources = [
|
|
'iov.c',
|
|
'virgl_context.c',
|
|
'virgl_context.h',
|
|
'virgl_hw.h',
|
|
'virgl_protocol.h',
|
|
'virgl_resource.c',
|
|
'virgl_resource.h',
|
|
'virgl_util.c',
|
|
'virgl_util.h',
|
|
]
|
|
|
|
vrend_sources = [
|
|
'vrend_blitter.c',
|
|
'vrend_blitter.h',
|
|
'vrend_debug.c',
|
|
'vrend_debug.h',
|
|
'vrend_decode.c',
|
|
'vrend_formats.c',
|
|
'vrend_iov.h',
|
|
'vrend_object.c',
|
|
'vrend_object.h',
|
|
'vrend_renderer.c',
|
|
'vrend_renderer.h',
|
|
'vrend_shader.c',
|
|
'vrend_shader.h',
|
|
'vrend_strbuf.h',
|
|
'vrend_tweaks.c',
|
|
'vrend_tweaks.h',
|
|
'vrend_winsys.c',
|
|
'vrend_winsys.h',
|
|
]
|
|
|
|
virglrenderer_sources = [
|
|
'virglrenderer.c',
|
|
'virglrenderer.h',
|
|
'virglrenderer_hw.h',
|
|
]
|
|
|
|
vrend_winsys_egl_sources = [
|
|
'vrend_winsys_gbm.c',
|
|
'vrend_winsys_gbm.h',
|
|
'vrend_winsys_egl.c',
|
|
'vrend_winsys_egl.h',
|
|
]
|
|
|
|
vrend_winsys_glx_sources = [
|
|
'vrend_winsys_glx.c',
|
|
'vrend_winsys_glx.h',
|
|
]
|
|
|
|
venus_sources = [
|
|
'venus_hw.h',
|
|
'venus/venus-protocol/vn_protocol_renderer.h',
|
|
'venus/vkr_buffer.c',
|
|
'venus/vkr_buffer.h',
|
|
'venus/vkr_command_buffer.c',
|
|
'venus/vkr_command_buffer.h',
|
|
'venus/vkr_common.c',
|
|
'venus/vkr_common.h',
|
|
'venus/vkr_context.c',
|
|
'venus/vkr_context.h',
|
|
'venus/vkr_cs.c',
|
|
'venus/vkr_cs.h',
|
|
'venus/vkr_descriptor_set.c',
|
|
'venus/vkr_descriptor_set.h',
|
|
'venus/vkr_device.c',
|
|
'venus/vkr_device.h',
|
|
'venus/vkr_device_memory.c',
|
|
'venus/vkr_device_memory.h',
|
|
'venus/vkr_image.c',
|
|
'venus/vkr_image.h',
|
|
'venus/vkr_instance.c',
|
|
'venus/vkr_instance.h',
|
|
'venus/vkr_physical_device.c',
|
|
'venus/vkr_physical_device.h',
|
|
'venus/vkr_pipeline.c',
|
|
'venus/vkr_pipeline.h',
|
|
'venus/vkr_query_pool.c',
|
|
'venus/vkr_query_pool.h',
|
|
'venus/vkr_queue.c',
|
|
'venus/vkr_queue.h',
|
|
'venus/vkr_render_pass.c',
|
|
'venus/vkr_render_pass.h',
|
|
'venus/vkr_renderer.c',
|
|
'venus/vkr_renderer.h',
|
|
'venus/vkr_ring.c',
|
|
'venus/vkr_ring.h',
|
|
'venus/vkr_transport.c',
|
|
'venus/vkr_transport.h',
|
|
]
|
|
|
|
venus_codegen = custom_target(
|
|
'venus_codegen',
|
|
input : ['venus/vkr_device_object.py', 'venus/vkr_device_object.json'],
|
|
output : [
|
|
'vkr_buffer_gen.h',
|
|
'vkr_command_buffer_gen.h',
|
|
'vkr_descriptor_set_gen.h',
|
|
'vkr_device_memory_gen.h',
|
|
'vkr_image_gen.h',
|
|
'vkr_pipeline_gen.h',
|
|
'vkr_query_pool_gen.h',
|
|
'vkr_queue_gen.h',
|
|
'vkr_render_pass_gen.h',
|
|
],
|
|
command : [prog_python, '@INPUT0@', '-o', '@OUTDIR@', '@INPUT1@'],
|
|
)
|
|
|
|
proxy_sources = [
|
|
'proxy/proxy_client.c',
|
|
'proxy/proxy_common.c',
|
|
'proxy/proxy_context.c',
|
|
'proxy/proxy_renderer.c',
|
|
'proxy/proxy_server.c',
|
|
'proxy/proxy_socket.c',
|
|
]
|
|
|
|
virgl_depends = [
|
|
gallium_dep,
|
|
epoxy_dep,
|
|
libdrm_dep,
|
|
thread_dep,
|
|
m_dep,
|
|
]
|
|
|
|
if with_tracing == 'perfetto'
|
|
virgl_depends += [vperfetto_min_dep]
|
|
endif
|
|
|
|
if with_tracing == 'percetto'
|
|
virgl_depends += [percetto_dep]
|
|
endif
|
|
|
|
virgl_sources += vrend_sources
|
|
|
|
if have_egl
|
|
virgl_sources += vrend_winsys_egl_sources
|
|
virgl_depends += [gbm_dep]
|
|
endif
|
|
|
|
if have_glx
|
|
virgl_sources += vrend_winsys_glx_sources
|
|
virgl_depends += [glx_dep]
|
|
endif
|
|
|
|
if with_venus
|
|
virgl_sources += venus_sources
|
|
virgl_sources += venus_codegen
|
|
virgl_depends += [venus_dep]
|
|
endif
|
|
|
|
if with_render_server
|
|
virgl_sources += proxy_sources
|
|
endif
|
|
|
|
libvirgl = static_library(
|
|
'virgl',
|
|
virgl_sources,
|
|
include_directories: [inc_gallium, inc_configuration, 'venus'],
|
|
dependencies : virgl_depends,
|
|
)
|
|
|
|
libvirgl_inc = [
|
|
inc_gallium,
|
|
inc_configuration,
|
|
include_directories(['.', 'venus'])
|
|
]
|
|
|
|
libvirgl_dep = declare_dependency(
|
|
link_with: libvirgl,
|
|
include_directories: libvirgl_inc
|
|
)
|
|
|
|
libvirglrenderer = library(
|
|
'virglrenderer',
|
|
virglrenderer_sources,
|
|
include_directories: [inc_gallium, inc_configuration],
|
|
dependencies : [virgl_depends, libvirgl_dep],
|
|
version : binary_age.to_string() + '.'
|
|
+ interface_age.to_string() + '.'
|
|
+ revision.to_string(),
|
|
install : true
|
|
)
|
|
|
|
libvirglrenderer_dep = declare_dependency(
|
|
link_with: libvirglrenderer,
|
|
include_directories: libvirgl_inc,
|
|
dependencies : [libvirgl_dep, gallium_dep]
|
|
)
|
|
|
|
install_headers('virglrenderer.h', subdir : 'virgl')
|
|
|