1# $NetBSD: Makefile,v 1.43 2024/05/08 16:53:34 christos Exp $ 2 3# Link the mesa_dri_drivers mega driver. 4 5NOLINT= # Lots of "Unsupported platform" due to undefined __GNUC__ 6 7.include <bsd.own.mk> 8 9.include "../mesa-which.mk" 10 11.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" || \ 12 ${MACHINE} == "evbarm" 13 14LIBISMODULE= yes 15LIBISCXX= yes 16 17SHLIB_MAJOR= 0 18 19LIB= mesa_dri_drivers 20DRIDIR= ${X11USRLIBDIR}/modules/dri 21DRIDEBUGDIR= ${DEBUGDIR}${X11USRLIBDIR}/modules/dri 22 23LDFLAGS+= -Wl,--build-id=sha1 24 25# -I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/${MODULE}/server \ 26 27CPPFLAGS+= \ 28 -I${X11SRCDIR.Mesa}/src/egl/main \ 29 -I${X11SRCDIR.Mesa}/src/egl/drivers/dri \ 30 -I${X11SRCDIR.Mesa}/../src/mesa/drivers/dri/common \ 31 -I${DESTDIR}${X11INCDIR}/libdrm \ 32 -I${X11SRCDIR.Mesa}/../src/util 33 34.if ${MACHINE_ARCH} == "i386" 35CPPFLAGS.brw_disk_cache.c+= -march=i586 36.endif 37 38#CPPFLAGS+= -D_NETBSD_SOURCE -DPTHREADS 39 40# We don't actually build this on non-x86/non-evbarm at all, currently. 41# The following if statements are not effective since we only 42# get here for x86 and evbarm 43.if ${MACHINE_ARCH} == "alpha" 44DRIVERS= r200 radeon 45.elif ${MACHINE} == "macppc" || ${MACHINE} == "ofppc" 46DRIVERS= r200 radeon 47.elif ${MACHINE_ARCH} == "sparc64" || ${MACHINE_ARCH} == "sparc" 48DRIVERS= r200 radeon 49.elif ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" 50DRIVERS= i915 i965 r200 radeon 51.elif ${MACHINE} == "prep" || ${MACHINE} == "bebox" 52DRIVERS= r200 radeon 53.elif ${MACHINE} == "evbarm" 54DRIVERS= r200 radeon 55.endif 56 57DRI_SUBDIRS= ${DRIVERS} 58 59.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" 60 61DRI_SOURCES.i915+= \ 62 i830_context.c \ 63 i830_state.c \ 64 i830_texblend.c \ 65 i830_texstate.c \ 66 i830_vtbl.c \ 67 i915_context.c \ 68 i915_debug_fp.c \ 69 i915_fragprog.c \ 70 i915_program.c \ 71 i915_state.c \ 72 i915_texstate.c \ 73 i915_vtbl.c \ 74 i915_tex_layout.c 75 76I915_INTEL_FILES = \ 77 intel_batchbuffer.c \ 78 intel_blit.c \ 79 intel_buffer_objects.c \ 80 intel_buffers.c \ 81 intel_clear.c \ 82 intel_context.c \ 83 intel_extensions.c \ 84 intel_fbo.c \ 85 intel_mipmap_tree.c \ 86 intel_pixel.c \ 87 intel_pixel_bitmap.c \ 88 intel_pixel_copy.c \ 89 intel_pixel_draw.c \ 90 intel_pixel_read.c \ 91 intel_regions.c \ 92 intel_render.c \ 93 intel_screen.c \ 94 intel_state.c \ 95 intel_syncobj.c \ 96 intel_tex.c \ 97 intel_tex_copy.c \ 98 intel_tex_image.c \ 99 intel_tex_layout.c \ 100 intel_tex_subimage.c \ 101 intel_tex_validate.c \ 102 intel_tris.c 103 104.for _f in ${I915_INTEL_FILES} 105BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i915/${_f} i915_${_f} 106DRI_SOURCES.i915+= i915_${_f} 107CPPFLAGS.i915_${_f}+= -I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i915 108.endfor 109 110.PATH: ${X11SRCDIR.Mesa}/src/intel/blorp 111.PATH: ${X11SRCDIR.Mesa}/src/intel/common 112.PATH: ${X11SRCDIR.Mesa}/src/intel/compiler 113.PATH: ${X11SRCDIR.Mesa}/src/intel/dev 114.PATH: ${X11SRCDIR.Mesa}/src/intel/ds 115.PATH: ${X11SRCDIR.Mesa}/src/intel/isl 116.PATH: ${X11SRCDIR.Mesa}/src/intel/perf 117.PATH: ${X11SRCDIR.Mesa}/../src/intel/ 118.PATH: ${X11SRCDIR.Mesa}/../src/intel/compiler 119.PATH: ${X11SRCDIR.Mesa}/../src/intel/isl 120.PATH: ${X11SRCDIR.Mesa}/../src/intel/perf 121 122DRI_SOURCES.i965+= \ 123 blorp.c \ 124 blorp_blit.c \ 125 blorp_clear.c \ 126 brw_batch.c \ 127 brw_binding_tables.c \ 128 brw_blit.c \ 129 brw_blorp.c \ 130 brw_mipmap_tree.c \ 131 brw_buffer_objects.c \ 132 brw_buffers.c \ 133 brw_bufmgr.c \ 134 brw_cfg.cpp \ 135 brw_clear.c \ 136 brw_clip.c \ 137 brw_clip_line.c \ 138 brw_clip_point.c \ 139 brw_clip_tri.c \ 140 brw_clip_unfilled.c \ 141 brw_clip_util.c \ 142 brw_compile_clip.c \ 143 brw_compile_ff_gs.c \ 144 brw_compile_sf.c \ 145 brw_compiler.c \ 146 brw_compute.c \ 147 brw_conditional_render.c \ 148 brw_context.c \ 149 brw_copy_image.c \ 150 brw_cs.c \ 151 brw_curbe.c \ 152 brw_dead_control_flow.cpp \ 153 brw_debug_recompile.c \ 154 brw_disasm.c \ 155 brw_disasm_info.c \ 156 brw_disk_cache.c \ 157 brw_draw.c \ 158 brw_draw_upload.c \ 159 brw_eu.cpp \ 160 brw_eu_compact.c \ 161 brw_eu_emit.c \ 162 brw_eu_util.c \ 163 brw_eu_validate.c \ 164 brw_extensions.c \ 165 brw_fbo.c \ 166 brw_fs.cpp \ 167 brw_fs_bank_conflicts.cpp \ 168 brw_fs_cmod_propagation.cpp \ 169 brw_fs_combine_constants.cpp \ 170 brw_fs_copy_propagation.cpp \ 171 brw_fs_cse.cpp \ 172 brw_fs_dead_code_eliminate.cpp \ 173 brw_fs_generator.cpp \ 174 brw_fs_live_variables.cpp \ 175 brw_fs_lower_pack.cpp \ 176 brw_fs_lower_regioning.cpp \ 177 brw_fs_nir.cpp \ 178 brw_fs_reg_allocate.cpp \ 179 brw_ff_gs.c \ 180 brw_formatquery.c \ 181 brw_fs_register_coalesce.cpp \ 182 brw_fs_saturate_propagation.cpp \ 183 brw_fs_scoreboard.cpp \ 184 brw_fs_sel_peephole.cpp \ 185 brw_fs_validate.cpp \ 186 brw_fs_visitor.cpp \ 187 brw_generate_mipmap.c \ 188 brw_gs.c \ 189 brw_gs_surface_state.c \ 190 brw_interpolation_map.c \ 191 brw_ir_performance.cpp \ 192 brw_link.cpp \ 193 brw_meta_util.c \ 194 brw_mipmap_tree.c \ 195 brw_misc_state.c \ 196 brw_nir.c \ 197 brw_nir_analyze_boolean_resolves.c \ 198 brw_nir_analyze_ubo_ranges.c \ 199 brw_nir_attribute_workarounds.c \ 200 brw_nir_clamp_image_1d_2d_array_sizes.c \ 201 brw_nir_lower_alpha_to_coverage.c \ 202 brw_nir_lower_conversions.c \ 203 brw_nir_lower_cs_intrinsics.c \ 204 brw_nir_lower_intersection_shader.c \ 205 brw_nir_lower_mem_access_bit_sizes.c \ 206 brw_nir_lower_rt_intrinsics.c \ 207 brw_nir_lower_scoped_barriers.c \ 208 brw_nir_lower_shader_calls.c \ 209 brw_nir_lower_storage_image.c \ 210 brw_nir_opt_peephole_ffma.c \ 211 brw_nir_rt.c \ 212 brw_nir_tcs_workarounds.c \ 213 brw_nir_trig_workarounds.c \ 214 brw_nir_uniforms.cpp \ 215 brw_object_purgeable.c \ 216 brw_packed_float.c \ 217 brw_performance_query.c \ 218 brw_pipe_control.c \ 219 brw_pixel.c \ 220 brw_pixel_bitmap.c \ 221 brw_pixel_copy.c \ 222 brw_pixel_draw.c \ 223 brw_pixel_read.c \ 224 brw_predicated_break.cpp \ 225 brw_primitive_restart.c \ 226 brw_program.c \ 227 brw_program_binary.c \ 228 brw_program_cache.c \ 229 brw_queryobj.c \ 230 brw_reg_type.c \ 231 brw_reset.c \ 232 brw_screen.c \ 233 brw_sf.c \ 234 brw_schedule_instructions.cpp \ 235 brw_shader.cpp \ 236 brw_state.c \ 237 brw_state_upload.c \ 238 brw_surface_formats.c \ 239 brw_sync.c \ 240 brw_tcs.c \ 241 brw_tcs_surface_state.c \ 242 brw_tes.c \ 243 brw_tes_surface_state.c \ 244 brw_tex.c \ 245 brw_tex_copy.c \ 246 brw_tex_image.c \ 247 brw_tex_validate.c \ 248 brw_upload.c \ 249 brw_urb.c \ 250 brw_util.c \ 251 brw_vec4.cpp \ 252 brw_vec4_cmod_propagation.cpp \ 253 brw_vec4_copy_propagation.cpp \ 254 brw_vec4_cse.cpp \ 255 brw_vec4_dead_code_eliminate.cpp \ 256 brw_vec4_generator.cpp \ 257 brw_vec4_gs_nir.cpp \ 258 brw_vec4_gs_visitor.cpp \ 259 brw_vec4_live_variables.cpp \ 260 brw_vec4_nir.cpp \ 261 brw_vec4_reg_allocate.cpp \ 262 brw_vec4_surface_builder.cpp \ 263 brw_vec4_tcs.cpp \ 264 brw_vec4_tes.cpp \ 265 brw_vec4_visitor.cpp \ 266 brw_vec4_vs_visitor.cpp \ 267 brw_vs.c \ 268 brw_vs_surface_state.c \ 269 brw_vue_map.c \ 270 brw_wm.c \ 271 brw_wm_iz.cpp \ 272 brw_wm_surface_state.c \ 273 gfx6_clip_state.c \ 274 gfx6_constant_state.c \ 275 gfx6_gs_visitor.cpp \ 276 gfx6_multisample_state.c \ 277 gfx6_queryobj.c \ 278 gfx6_sampler_state.c \ 279 gfx6_sol.c \ 280 gfx6_urb.c \ 281 gfx7_l3_state.c \ 282 gfx7_sol_state.c \ 283 gfx7_urb.c \ 284 gfx8_depth_state.c \ 285 gfx8_multisample_state.c \ 286 hsw_queryobj.c \ 287 hsw_sol.c \ 288 intel_perf_metrics.c \ 289 isl.c \ 290 isl_aux_info.c \ 291 isl_drm.c \ 292 isl_format.c \ 293 isl_format_layout.c \ 294 isl_gfx4.c \ 295 isl_gfx6.c \ 296 isl_gfx7.c \ 297 isl_gfx8.c \ 298 isl_gfx9.c \ 299 isl_gfx12.c \ 300 isl_storage_image.c \ 301 isl_tiled_memcpy.c \ 302 isl_tiled_memcpy_normal.c \ 303 isl_tiled_memcpy_sse41.c 304 305I965_INTEL_COMMON_FILES = \ 306 intel_aux_map.c \ 307 intel_batch_decoder.c \ 308 intel_decoder.c \ 309 intel_disasm.c \ 310 intel_gem.c \ 311 intel_l3_config.c \ 312 intel_measure.c \ 313 intel_sample_positions.c \ 314 intel_urb_config.c \ 315 intel_uuid.c 316 317I965_INTEL_DEV_FILES = \ 318 intel_debug.c \ 319 intel_dev_info.c \ 320 intel_device_info.c 321 322I965_INTEL_PERF_FILES = \ 323 intel_perf.c \ 324 intel_perf_query.c \ 325 intel_perf_mdapi.c 326 327INTEL_GENS_BLORP= 40 45 50 60 70 75 80 90 110 328 329.for _gen in ${INTEL_GENS_BLORP} 330BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i965/genX_state_upload.c ${_gen}_state_upload.c 331BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i965/genX_blorp_exec.c ${_gen}_blorp_exec.c 332BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i965/genX_pipe_control.c ${_gen}_pipe_control.c 333DRI_SOURCES.i965+= ${_gen}_state_upload.c ${_gen}_blorp_exec.c ${_gen}_pipe_control.c 334 335CPPFLAGS.${_gen}_state_upload.c+= -DGFX_VERx10=${_gen} 336CPPFLAGS.${_gen}_blorp_exec.c+= -DGFX_VERx10=${_gen} 337CPPFLAGS.${_gen}_pipe_control.c+= -DGFX_VERx10=${_gen} 338.endfor 339 340INTEL_GENS_ISL= 40 50 60 70 75 80 90 110 120 125 341 342.for _gen in ${INTEL_GENS_ISL} 343BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/intel/isl/isl_emit_depth_stencil.c ${_gen}_isl_emit_depth_stencil.c 344BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/intel/isl/isl_surface_state.c ${_gen}_isl_surface_state.c 345DRI_SOURCES.i965+= ${_gen}_isl_emit_depth_stencil.c ${_gen}_isl_surface_state.c 346 347CPPFLAGS.${_gen}_isl_emit_depth_stencil.c+= -DGFX_VERx10=${_gen} -I${X11SRCDIR.Mesa}/src/intel/isl/ 348CPPFLAGS.${_gen}_isl_surface_state.c+= -DGFX_VERx10=${_gen} -I${X11SRCDIR.Mesa}/src/intel/isl/ 349.endfor 350 351.for _f in ${I965_INTEL_COMMON_FILES} 352BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/intel/common/${_f} i965_${_f} 353DRI_SOURCES.i965+= i965_${_f} 354.endfor 355.for _f in ${I965_INTEL_DEV_FILES} 356BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/intel/dev/${_f} i965_${_f} 357DRI_SOURCES.i965+= i965_${_f} 358.endfor 359.for _f in ${I965_INTEL_PERF_FILES} 360BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/intel/perf/${_f} i965_${_f} 361DRI_SOURCES.i965+= i965_${_f} 362CPPFLAGS.i965_${_f}+= -I${X11SRCDIR.Mesa}/src/intel/perf 363.endfor 364 365.for _f in ${DRI_SOURCES.i965} 366CPPFLAGS.${_f} += -I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/i965 \ 367 -I${X11SRCDIR.Mesa}/src/intel \ 368 -I${X11SRCDIR.Mesa}/src/intel/common \ 369 -I${X11SRCDIR.Mesa}/src/intel/compiler \ 370 -I${X11SRCDIR.Mesa}/src/intel/dev \ 371 -I${X11SRCDIR.Mesa}/../src/intel \ 372 -I${X11SRCDIR.Mesa}/src/compiler/nir \ 373 -I${X11SRCDIR.Mesa}/../src/compiler/nir \ 374 -I${X11SRCDIR.Mesa}/../src 375.endfor 376 377# Needs mfence 378CPPFLAGS.brw_bufmgr.c+= -msse2 379 380.endif 381 382DRI_SOURCES.r200 = \ 383 r200_context.c \ 384 r200_ioctl.c \ 385 r200_state.c \ 386 r200_state_init.c \ 387 r200_cmdbuf.c \ 388 r200_tex.c \ 389 r200_texstate.c \ 390 r200_tcl.c \ 391 r200_swtcl.c \ 392 r200_maos.c \ 393 r200_sanity.c \ 394 r200_fragshader.c \ 395 r200_vertprog.c \ 396 r200_blit.c 397 398R200_RADEON_FILES= \ 399 radeon_buffer_objects.c \ 400 radeon_common_context.c \ 401 radeon_common.c \ 402 radeon_dma.c \ 403 radeon_debug.c \ 404 radeon_fbo.c \ 405 radeon_fog.c \ 406 radeon_mipmap_tree.c \ 407 radeon_pixel_read.c \ 408 radeon_queryobj.c \ 409 radeon_span.c \ 410 radeon_texture.c \ 411 radeon_tex_copy.c \ 412 radeon_tile.c \ 413 radeon_screen.c 414 415.for _f in ${R200_RADEON_FILES} 416BUILDSYMLINKS+= ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/radeon/${_f} r200_${_f} 417DRI_SOURCES.r200+= r200_${_f} 418.endfor 419 420.for _f in ${DRI_SOURCES.r200} 421CPPFLAGS.${_f} += -I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/r200/server \ 422 -I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/r200 \ 423 -I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/radeon/server \ 424 -I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/radeon \ 425 -DRADEON_R200 426.endfor 427 428DRI_SOURCES.radeon = \ 429 radeon_buffer_objects.c \ 430 radeon_common_context.c \ 431 radeon_common.c \ 432 radeon_dma.c \ 433 radeon_debug.c \ 434 radeon_fbo.c \ 435 radeon_fog.c \ 436 radeon_mipmap_tree.c \ 437 radeon_pixel_read.c \ 438 radeon_queryobj.c \ 439 radeon_span.c \ 440 radeon_texture.c \ 441 radeon_tex_copy.c \ 442 radeon_tile.c \ 443 radeon_context.c \ 444 radeon_ioctl.c \ 445 radeon_screen.c \ 446 radeon_state.c \ 447 radeon_state_init.c \ 448 radeon_tex.c \ 449 radeon_texstate.c \ 450 radeon_tcl.c \ 451 radeon_swtcl.c \ 452 radeon_maos.c \ 453 radeon_sanity.c \ 454 radeon_blit.c 455 456.for _f in ${DRI_SOURCES.radeon} 457CPPFLAGS.${_f} += -I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/radeon/server \ 458 -I${X11SRCDIR.Mesa}/src/mesa/drivers/dri/radeon \ 459 -DRADEON_R100 460.endfor 461 462.for _d in ${DRI_SUBDIRS} 463SRCS+= ${DRI_SOURCES.${_d}} 464.PATH: ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/${_d} 465.endfor 466 467 468LIBDPLIBS+= expat ${NETBSDSRCDIR}/external/mit/expat/lib/libexpat 469LIBDPLIBS+= m ${NETBSDSRCDIR}/lib/libm 470LIBDPLIBS+= pthread ${NETBSDSRCDIR}/lib/libpthread 471LIBDPLIBS+= glapi ${.CURDIR}/../libglapi${OLD_SUFFIX} 472LIBDPLIBS+= drm ${.CURDIR}/../libdrm 473.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" 474LIBDPLIBS+= drm_intel ${.CURDIR}/../libdrm_intel 475.endif 476LIBDPLIBS+= drm_radeon ${.CURDIR}/../libdrm_radeon 477 478MESA_SRC_MODULES= main math math_xform vbo tnl swrast ss common asm_c program asm_s 479.include "../libmesa.mk" 480.include "../libglsl.mk" 481 482.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" 483SRCS+= streaming-load-memcpy.c 484CPPFLAGS.streaming-load-memcpy.c+= -msse4.1 485CPPFLAGS.isl_tiled_memcpy_sse41.c+= -msse4.1 486.endif 487 488CWARNFLAGS.clang+= -Wno-error=atomic-alignment 489CWARNFLAGS.clang+= -Wno-error=typedef-redefinition 490 491.include "../driver.mk" 492 493.for _d in ${DRIVERS} 494SYMLINKS+= mesa_dri_drivers.so.${SHLIB_MAJOR} ${DRIDIR}/${_d}_dri.so.${SHLIB_MAJOR} 495SYMLINKS+= ${_d}_dri.so.${SHLIB_MAJOR} ${DRIDIR}/${_d}_dri.so 496.if ${MKDEBUG} != "no" 497SYMLINKS+= mesa_dri_drivers.so.${SHLIB_MAJOR}.debug ${DRIDEBUGDIR}/${_d}_dri.so.${SHLIB_MAJOR}.debug 498.endif 499.endfor 500 501.endif 502 503PKGCONFIG= dri 504PKGDIST.dri= ${X11SRCDIR.Mesa}/../src/pkgconfig 505.include "${.CURDIR}/../libGL/mesa-ver.mk" 506PKGCONFIG_VERSION.dri= ${MESA_VER} 507 508# XXX remove these from bsd.x11.mk 509PKGCONFIG_SED_FLAGS= \ 510 -e "s,@DRI_DRIVER_INSTALL_DIR@,${X11USRLIBDIR}/modules/dri,; \ 511 s,@DRI_PC_REQ_PRIV@,," 512 513.PATH: ${X11SRCDIR.Mesa}/src/util 514 515FILESDIR= /etc 516BUILDSYMLINKS+= 00-mesa-defaults.conf drirc 517FILES= drirc 518 519.PATH: ${X11SRCDIR.Mesa}/src/mesa/drivers/dri/common 520 521.include <bsd.x11.mk> 522.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" || \ 523 ${MACHINE} == "evbarm" 524LIBDIR= ${X11USRLIBDIR}/modules/dri 525 526CWARNFLAGS.clang+= -Wno-error=initializer-overrides -Wno-error=switch \ 527 -Wno-error=tautological-constant-out-of-range-compare \ 528 -Wno-error=enum-conversion \ 529 -Wno-error=implicit-int-float-conversion \ 530 -Wno-error=tautological-constant-compare \ 531 -Wno-c99-designator -Wno-xor-used-as-pow \ 532 -Wno-typedef-redefinition 533 534COPTS+= -Wno-error=stack-protector 535 536COPTS.u_atomic.c+= ${${ACTIVE_CC} == "gcc" && ${HAVE_GCC:U0} >= 10:? -Wno-builtin-declaration-mismatch :} 537 538.include <bsd.lib.mk> 539.else 540.include <bsd.inc.mk> 541.endif 542# Don't re-build .c files when .y files change 543.y.c: 544