1*bbecb9d1SAndroid Build Coastguard Worker############################################################################# 2*bbecb9d1SAndroid Build Coastguard Worker# 3*bbecb9d1SAndroid Build Coastguard Worker# Copyright (C) 2019 Collabora Ltd 4*bbecb9d1SAndroid Build Coastguard Worker# 5*bbecb9d1SAndroid Build Coastguard Worker# Permission is hereby granted, free of charge, to any person obtaining a 6*bbecb9d1SAndroid Build Coastguard Worker# copy of this software and associated documentation files (the "Software"), 7*bbecb9d1SAndroid Build Coastguard Worker# to deal in the Software without restriction, including without limitation 8*bbecb9d1SAndroid Build Coastguard Worker# the rights to use, copy, modify, merge, publish, distribute, sublicense, 9*bbecb9d1SAndroid Build Coastguard Worker# and/or sell copies of the Software, and to permit persons to whom the 10*bbecb9d1SAndroid Build Coastguard Worker# Software is furnished to do so, subject to the following conditions: 11*bbecb9d1SAndroid Build Coastguard Worker# 12*bbecb9d1SAndroid Build Coastguard Worker# The above copyright notice and this permission notice shall be included 13*bbecb9d1SAndroid Build Coastguard Worker# in all copies or substantial portions of the Software. 14*bbecb9d1SAndroid Build Coastguard Worker# 15*bbecb9d1SAndroid Build Coastguard Worker# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 16*bbecb9d1SAndroid Build Coastguard Worker# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17*bbecb9d1SAndroid Build Coastguard Worker# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18*bbecb9d1SAndroid Build Coastguard Worker# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 19*bbecb9d1SAndroid Build Coastguard Worker# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 20*bbecb9d1SAndroid Build Coastguard Worker# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 21*bbecb9d1SAndroid Build Coastguard Worker# OTHER DEALINGS IN THE SOFTWARE. 22*bbecb9d1SAndroid Build Coastguard Worker# 23*bbecb9d1SAndroid Build Coastguard Worker 24*bbecb9d1SAndroid Build Coastguard Workersubdir('mesa') 25*bbecb9d1SAndroid Build Coastguard Workersubdir('gallium') 26*bbecb9d1SAndroid Build Coastguard Worker 27*bbecb9d1SAndroid Build Coastguard Workervirgl_sources = [ 28*bbecb9d1SAndroid Build Coastguard Worker 'iov.c', 29*bbecb9d1SAndroid Build Coastguard Worker 'virgl_context.c', 30*bbecb9d1SAndroid Build Coastguard Worker 'virgl_context.h', 31*bbecb9d1SAndroid Build Coastguard Worker 'virgl_hw.h', 32*bbecb9d1SAndroid Build Coastguard Worker 'virgl_protocol.h', 33*bbecb9d1SAndroid Build Coastguard Worker 'virgl_resource.c', 34*bbecb9d1SAndroid Build Coastguard Worker 'virgl_resource.h', 35*bbecb9d1SAndroid Build Coastguard Worker 'virgl_util.c', 36*bbecb9d1SAndroid Build Coastguard Worker 'virgl_util.h', 37*bbecb9d1SAndroid Build Coastguard Worker] 38*bbecb9d1SAndroid Build Coastguard Worker 39*bbecb9d1SAndroid Build Coastguard Workervrend_sources = [ 40*bbecb9d1SAndroid Build Coastguard Worker 'vrend_blitter.c', 41*bbecb9d1SAndroid Build Coastguard Worker 'vrend_blitter.h', 42*bbecb9d1SAndroid Build Coastguard Worker 'vrend_debug.c', 43*bbecb9d1SAndroid Build Coastguard Worker 'vrend_debug.h', 44*bbecb9d1SAndroid Build Coastguard Worker 'vrend_decode.c', 45*bbecb9d1SAndroid Build Coastguard Worker 'vrend_formats.c', 46*bbecb9d1SAndroid Build Coastguard Worker 'vrend_iov.h', 47*bbecb9d1SAndroid Build Coastguard Worker 'vrend_object.c', 48*bbecb9d1SAndroid Build Coastguard Worker 'vrend_object.h', 49*bbecb9d1SAndroid Build Coastguard Worker 'vrend_renderer.c', 50*bbecb9d1SAndroid Build Coastguard Worker 'vrend_renderer.h', 51*bbecb9d1SAndroid Build Coastguard Worker 'vrend_shader.c', 52*bbecb9d1SAndroid Build Coastguard Worker 'vrend_shader.h', 53*bbecb9d1SAndroid Build Coastguard Worker 'vrend_strbuf.h', 54*bbecb9d1SAndroid Build Coastguard Worker 'vrend_tweaks.c', 55*bbecb9d1SAndroid Build Coastguard Worker 'vrend_tweaks.h', 56*bbecb9d1SAndroid Build Coastguard Worker 'vrend_winsys.c', 57*bbecb9d1SAndroid Build Coastguard Worker 'vrend_winsys.h', 58*bbecb9d1SAndroid Build Coastguard Worker] 59*bbecb9d1SAndroid Build Coastguard Worker 60*bbecb9d1SAndroid Build Coastguard Workervirglrenderer_sources = [ 61*bbecb9d1SAndroid Build Coastguard Worker 'virglrenderer.c', 62*bbecb9d1SAndroid Build Coastguard Worker 'virglrenderer.h', 63*bbecb9d1SAndroid Build Coastguard Worker 'virglrenderer_hw.h', 64*bbecb9d1SAndroid Build Coastguard Worker] 65*bbecb9d1SAndroid Build Coastguard Worker 66*bbecb9d1SAndroid Build Coastguard Workervrend_winsys_egl_sources = [ 67*bbecb9d1SAndroid Build Coastguard Worker 'vrend_winsys_gbm_stubs.c', 68*bbecb9d1SAndroid Build Coastguard Worker 'vrend_winsys_egl.c', 69*bbecb9d1SAndroid Build Coastguard Worker 'vrend_winsys_egl.h', 70*bbecb9d1SAndroid Build Coastguard Worker] 71*bbecb9d1SAndroid Build Coastguard Worker 72*bbecb9d1SAndroid Build Coastguard Workervrend_winsys_glx_sources = [ 73*bbecb9d1SAndroid Build Coastguard Worker 'vrend_winsys_glx.c', 74*bbecb9d1SAndroid Build Coastguard Worker 'vrend_winsys_glx.h', 75*bbecb9d1SAndroid Build Coastguard Worker] 76*bbecb9d1SAndroid Build Coastguard Worker 77*bbecb9d1SAndroid Build Coastguard Workervenus_sources = [ 78*bbecb9d1SAndroid Build Coastguard Worker 'venus_hw.h', 79*bbecb9d1SAndroid Build Coastguard Worker 'venus/venus-protocol/vn_protocol_renderer.h', 80*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_allocator.c', 81*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_allocator.h', 82*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_buffer.c', 83*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_buffer.h', 84*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_command_buffer.c', 85*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_command_buffer.h', 86*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_common.c', 87*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_common.h', 88*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_context.c', 89*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_context.h', 90*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_cs.c', 91*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_cs.h', 92*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_descriptor_set.c', 93*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_descriptor_set.h', 94*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_device.c', 95*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_device.h', 96*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_device_memory.c', 97*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_device_memory.h', 98*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_image.c', 99*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_image.h', 100*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_instance.c', 101*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_instance.h', 102*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_physical_device.c', 103*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_physical_device.h', 104*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_pipeline.c', 105*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_pipeline.h', 106*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_query_pool.c', 107*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_query_pool.h', 108*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_queue.c', 109*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_queue.h', 110*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_render_pass.c', 111*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_render_pass.h', 112*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_renderer.c', 113*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_renderer.h', 114*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_ring.c', 115*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_ring.h', 116*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_transport.c', 117*bbecb9d1SAndroid Build Coastguard Worker 'venus/vkr_transport.h', 118*bbecb9d1SAndroid Build Coastguard Worker] 119*bbecb9d1SAndroid Build Coastguard Worker 120*bbecb9d1SAndroid Build Coastguard Workervenus_codegen = custom_target( 121*bbecb9d1SAndroid Build Coastguard Worker 'venus_codegen', 122*bbecb9d1SAndroid Build Coastguard Worker input : ['venus/vkr_device_object.py', 'venus/vkr_device_object.json'], 123*bbecb9d1SAndroid Build Coastguard Worker output : [ 124*bbecb9d1SAndroid Build Coastguard Worker 'vkr_buffer_gen.h', 125*bbecb9d1SAndroid Build Coastguard Worker 'vkr_command_buffer_gen.h', 126*bbecb9d1SAndroid Build Coastguard Worker 'vkr_descriptor_set_gen.h', 127*bbecb9d1SAndroid Build Coastguard Worker 'vkr_device_memory_gen.h', 128*bbecb9d1SAndroid Build Coastguard Worker 'vkr_image_gen.h', 129*bbecb9d1SAndroid Build Coastguard Worker 'vkr_pipeline_gen.h', 130*bbecb9d1SAndroid Build Coastguard Worker 'vkr_query_pool_gen.h', 131*bbecb9d1SAndroid Build Coastguard Worker 'vkr_queue_gen.h', 132*bbecb9d1SAndroid Build Coastguard Worker 'vkr_render_pass_gen.h', 133*bbecb9d1SAndroid Build Coastguard Worker ], 134*bbecb9d1SAndroid Build Coastguard Worker command : [prog_python, '@INPUT0@', '-o', '@OUTDIR@', '@INPUT1@'], 135*bbecb9d1SAndroid Build Coastguard Worker) 136*bbecb9d1SAndroid Build Coastguard Worker 137*bbecb9d1SAndroid Build Coastguard Workerdrm_sources = [ 138*bbecb9d1SAndroid Build Coastguard Worker 'drm/drm_fence.c', 139*bbecb9d1SAndroid Build Coastguard Worker 'drm/drm_fence.h', 140*bbecb9d1SAndroid Build Coastguard Worker 'drm/drm_renderer.c', 141*bbecb9d1SAndroid Build Coastguard Worker 'drm/drm_renderer.h', 142*bbecb9d1SAndroid Build Coastguard Worker 'drm/drm_util.c', 143*bbecb9d1SAndroid Build Coastguard Worker 'drm/drm_util.h', 144*bbecb9d1SAndroid Build Coastguard Worker] 145*bbecb9d1SAndroid Build Coastguard Worker 146*bbecb9d1SAndroid Build Coastguard Workerdrm_msm_sources = [ 147*bbecb9d1SAndroid Build Coastguard Worker 'drm/drm-uapi/msm_drm.h', 148*bbecb9d1SAndroid Build Coastguard Worker 'drm/msm/msm_proto.h', 149*bbecb9d1SAndroid Build Coastguard Worker 'drm/msm/msm_renderer.c', 150*bbecb9d1SAndroid Build Coastguard Worker 'drm/msm/msm_renderer.h', 151*bbecb9d1SAndroid Build Coastguard Worker] 152*bbecb9d1SAndroid Build Coastguard Worker 153*bbecb9d1SAndroid Build Coastguard Workerproxy_sources = [ 154*bbecb9d1SAndroid Build Coastguard Worker 'proxy/proxy_client.c', 155*bbecb9d1SAndroid Build Coastguard Worker 'proxy/proxy_common.c', 156*bbecb9d1SAndroid Build Coastguard Worker 'proxy/proxy_context.c', 157*bbecb9d1SAndroid Build Coastguard Worker 'proxy/proxy_renderer.c', 158*bbecb9d1SAndroid Build Coastguard Worker 'proxy/proxy_server.c', 159*bbecb9d1SAndroid Build Coastguard Worker 'proxy/proxy_socket.c', 160*bbecb9d1SAndroid Build Coastguard Worker] 161*bbecb9d1SAndroid Build Coastguard Worker 162*bbecb9d1SAndroid Build Coastguard Workervideo_sources = [ 163*bbecb9d1SAndroid Build Coastguard Worker 'virgl_video_hw.h', 164*bbecb9d1SAndroid Build Coastguard Worker 'virgl_video.c', 165*bbecb9d1SAndroid Build Coastguard Worker 'virgl_video.h', 166*bbecb9d1SAndroid Build Coastguard Worker 'vrend_video.c', 167*bbecb9d1SAndroid Build Coastguard Worker 'vrend_video.h', 168*bbecb9d1SAndroid Build Coastguard Worker] 169*bbecb9d1SAndroid Build Coastguard Worker 170*bbecb9d1SAndroid Build Coastguard Workervirgl_depends = [ 171*bbecb9d1SAndroid Build Coastguard Worker gallium_dep, 172*bbecb9d1SAndroid Build Coastguard Worker epoxy_dep, 173*bbecb9d1SAndroid Build Coastguard Worker libdrm_dep, 174*bbecb9d1SAndroid Build Coastguard Worker thread_dep, 175*bbecb9d1SAndroid Build Coastguard Worker m_dep, 176*bbecb9d1SAndroid Build Coastguard Worker] 177*bbecb9d1SAndroid Build Coastguard Worker 178*bbecb9d1SAndroid Build Coastguard Workerif with_tracing == 'perfetto' 179*bbecb9d1SAndroid Build Coastguard Worker virgl_depends += [vperfetto_min_dep] 180*bbecb9d1SAndroid Build Coastguard Workerendif 181*bbecb9d1SAndroid Build Coastguard Worker 182*bbecb9d1SAndroid Build Coastguard Workerif with_tracing == 'percetto' 183*bbecb9d1SAndroid Build Coastguard Worker virgl_depends += [percetto_dep] 184*bbecb9d1SAndroid Build Coastguard Workerendif 185*bbecb9d1SAndroid Build Coastguard Worker 186*bbecb9d1SAndroid Build Coastguard Workervirgl_sources += vrend_sources 187*bbecb9d1SAndroid Build Coastguard Worker 188*bbecb9d1SAndroid Build Coastguard Workerif have_egl 189*bbecb9d1SAndroid Build Coastguard Worker virgl_sources += vrend_winsys_egl_sources 190*bbecb9d1SAndroid Build Coastguard Workerendif 191*bbecb9d1SAndroid Build Coastguard Worker 192*bbecb9d1SAndroid Build Coastguard Workerif have_glx 193*bbecb9d1SAndroid Build Coastguard Worker virgl_sources += vrend_winsys_glx_sources 194*bbecb9d1SAndroid Build Coastguard Worker virgl_depends += [glx_dep] 195*bbecb9d1SAndroid Build Coastguard Workerendif 196*bbecb9d1SAndroid Build Coastguard Worker 197*bbecb9d1SAndroid Build Coastguard Workerif with_venus 198*bbecb9d1SAndroid Build Coastguard Worker virgl_sources += venus_sources 199*bbecb9d1SAndroid Build Coastguard Worker virgl_sources += venus_codegen 200*bbecb9d1SAndroid Build Coastguard Worker virgl_depends += [venus_dep] 201*bbecb9d1SAndroid Build Coastguard Workerendif 202*bbecb9d1SAndroid Build Coastguard Worker 203*bbecb9d1SAndroid Build Coastguard Workerif with_drm 204*bbecb9d1SAndroid Build Coastguard Worker virgl_sources += drm_sources 205*bbecb9d1SAndroid Build Coastguard Workerendif 206*bbecb9d1SAndroid Build Coastguard Worker 207*bbecb9d1SAndroid Build Coastguard Workerif with_drm_msm 208*bbecb9d1SAndroid Build Coastguard Worker virgl_sources += drm_msm_sources 209*bbecb9d1SAndroid Build Coastguard Workerendif 210*bbecb9d1SAndroid Build Coastguard Worker 211*bbecb9d1SAndroid Build Coastguard Workerif with_render_server 212*bbecb9d1SAndroid Build Coastguard Worker virgl_sources += proxy_sources 213*bbecb9d1SAndroid Build Coastguard Workerendif 214*bbecb9d1SAndroid Build Coastguard Worker 215*bbecb9d1SAndroid Build Coastguard Workerif with_video 216*bbecb9d1SAndroid Build Coastguard Worker virgl_sources += video_sources 217*bbecb9d1SAndroid Build Coastguard Worker virgl_depends += [libva_dep, libvadrm_dep] 218*bbecb9d1SAndroid Build Coastguard Workerendif 219*bbecb9d1SAndroid Build Coastguard Worker 220*bbecb9d1SAndroid Build Coastguard Workerlibvirgl = static_library( 221*bbecb9d1SAndroid Build Coastguard Worker 'virgl', 222*bbecb9d1SAndroid Build Coastguard Worker virgl_sources, 223*bbecb9d1SAndroid Build Coastguard Worker include_directories: [inc_gallium, inc_configuration, 'venus', 'drm', 'drm/drm-uapi'], 224*bbecb9d1SAndroid Build Coastguard Worker dependencies : virgl_depends, 225*bbecb9d1SAndroid Build Coastguard Worker) 226*bbecb9d1SAndroid Build Coastguard Worker 227*bbecb9d1SAndroid Build Coastguard Workerlibvirgl_inc = [ 228*bbecb9d1SAndroid Build Coastguard Worker inc_gallium, 229*bbecb9d1SAndroid Build Coastguard Worker inc_configuration, 230*bbecb9d1SAndroid Build Coastguard Worker include_directories(['.', 'venus', 'drm']) 231*bbecb9d1SAndroid Build Coastguard Worker] 232*bbecb9d1SAndroid Build Coastguard Worker 233*bbecb9d1SAndroid Build Coastguard Workerlibvirgl_dep = declare_dependency( 234*bbecb9d1SAndroid Build Coastguard Worker link_with: libvirgl, 235*bbecb9d1SAndroid Build Coastguard Worker include_directories: libvirgl_inc 236*bbecb9d1SAndroid Build Coastguard Worker) 237*bbecb9d1SAndroid Build Coastguard Worker 238*bbecb9d1SAndroid Build Coastguard Workerlibvirglrenderer = library( 239*bbecb9d1SAndroid Build Coastguard Worker 'virglrenderer', 240*bbecb9d1SAndroid Build Coastguard Worker virglrenderer_sources, 241*bbecb9d1SAndroid Build Coastguard Worker include_directories: [inc_gallium, inc_configuration], 242*bbecb9d1SAndroid Build Coastguard Worker dependencies : [virgl_depends, libvirgl_dep], 243*bbecb9d1SAndroid Build Coastguard Worker version : binary_age.to_string() + '.' 244*bbecb9d1SAndroid Build Coastguard Worker + interface_age.to_string() + '.' 245*bbecb9d1SAndroid Build Coastguard Worker + revision.to_string(), 246*bbecb9d1SAndroid Build Coastguard Worker install : true 247*bbecb9d1SAndroid Build Coastguard Worker) 248*bbecb9d1SAndroid Build Coastguard Worker 249*bbecb9d1SAndroid Build Coastguard Workerpkg = import('pkgconfig') 250*bbecb9d1SAndroid Build Coastguard Workerpkg.generate(libvirglrenderer, 251*bbecb9d1SAndroid Build Coastguard Worker description: 'virgl GL renderer', 252*bbecb9d1SAndroid Build Coastguard Worker subdirs: 'virgl' 253*bbecb9d1SAndroid Build Coastguard Worker) 254*bbecb9d1SAndroid Build Coastguard Worker 255*bbecb9d1SAndroid Build Coastguard Workerlibvirglrenderer_dep = declare_dependency( 256*bbecb9d1SAndroid Build Coastguard Worker link_with: libvirglrenderer, 257*bbecb9d1SAndroid Build Coastguard Worker include_directories: libvirgl_inc, 258*bbecb9d1SAndroid Build Coastguard Worker dependencies : [libvirgl_dep, gallium_dep] 259*bbecb9d1SAndroid Build Coastguard Worker) 260*bbecb9d1SAndroid Build Coastguard Worker 261*bbecb9d1SAndroid Build Coastguard Workerinstall_headers('virglrenderer.h', subdir : 'virgl') 262