load("//build/kernel/kleaf:kernel.bzl", "ddk_module") load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir") msm_kgsl_includes = [ "include/linux/msm_kgsl.h", "include/uapi/linux/msm_kgsl.h", ] def kgsl_get_srcs(): srcs = [ "adreno.c", "adreno_a3xx.c", "adreno_a3xx_perfcounter.c", "adreno_a3xx_ringbuffer.c", "adreno_a3xx_snapshot.c", "adreno_a5xx.c", "adreno_a5xx_perfcounter.c", "adreno_a5xx_preempt.c", "adreno_a5xx_ringbuffer.c", "adreno_a5xx_snapshot.c", "adreno_a6xx.c", "adreno_a6xx_gmu.c", "adreno_a6xx_gmu_snapshot.c", "adreno_a6xx_hfi.c", "adreno_a6xx_hwsched.c", "adreno_a6xx_hwsched_hfi.c", "adreno_a6xx_perfcounter.c", "adreno_a6xx_preempt.c", "adreno_a6xx_rgmu.c", "adreno_a6xx_ringbuffer.c", "adreno_a6xx_rpmh.c", "adreno_a6xx_snapshot.c", "adreno_cp_parser.c", "adreno_dispatch.c", "adreno_drawctxt.c", "adreno_gen7.c", "adreno_gen7_gmu.c", "adreno_gen7_gmu_snapshot.c", "adreno_gen7_hfi.c", "adreno_gen7_hwsched.c", "adreno_gen7_hwsched_hfi.c", "adreno_gen7_perfcounter.c", "adreno_gen7_preempt.c", "adreno_gen7_ringbuffer.c", "adreno_gen7_rpmh.c", "adreno_gen7_snapshot.c", "adreno_gen8.c", "adreno_gen8_gmu.c", "adreno_gen8_gmu_snapshot.c", "adreno_gen8_hfi.c", "adreno_gen8_hwsched.c", "adreno_gen8_hwsched_hfi.c", "adreno_gen8_perfcounter.c", "adreno_gen8_preempt.c", "adreno_gen8_ringbuffer.c", "adreno_gen8_rpmh.c", "adreno_gen8_snapshot.c", "adreno_hwsched.c", "adreno_ioctl.c", "adreno_perfcounter.c", "adreno_ringbuffer.c", "adreno_snapshot.c", "adreno_sysfs.c", "adreno_trace.c", "governor_msm_adreno_tz.c", "governor_gpubw_mon.c", "kgsl.c", "kgsl_bus.c", "kgsl_drawobj.c", "kgsl_events.c", "kgsl_eventlog.c", "kgsl_gmu_core.c", "kgsl_ioctl.c", "kgsl_mmu.c", "kgsl_pwrctrl.c", "kgsl_pwrscale.c", "kgsl_regmap.c", "kgsl_sharedmem.c", "kgsl_snapshot.c", "kgsl_timeline.c", "kgsl_trace.c", "kgsl_util.c", "kgsl_vbo.c", ] srcs = srcs + native.glob(["*.h"]) + msm_kgsl_includes return srcs def external_deps(target, variant): tv = "{}_{}".format(target, variant) deplist = [] defconfigs = [] # Add msm_hw_fence in the dependency and defconfig lists for targets that use it if target in [ "pineapple" ]: deplist = deplist + [ "//vendor/qcom/opensource/mm-drivers/hw_fence:{}_msm_hw_fence".format(tv) ] defconfigs = defconfigs + [ "//vendor/qcom/opensource/mm-drivers/hw_fence:defconfig" ] native.genrule( name = "{}_defconfig".format(tv), srcs = defconfigs + [ "config/{}_gpuconf".format(tv) ], outs = [ "{}_defconfig.generated".format(tv) ], cmd = "cat $(SRCS) > $@" ) return deplist def define_target_variant_module(target, variant): tv = "{}_{}".format(target, variant) rule_name = "{}_msm_kgsl".format(tv) kernel_build = "//msm-kernel:{}".format(tv) ext_deps = external_deps(target, variant) ddk_module( name = rule_name, out = "msm_kgsl.ko", srcs = kgsl_get_srcs(), defconfig = "{}_defconfig".format(tv), kconfig = "Kconfig", conditional_srcs = { "CONFIG_ARM_SMMU": { True: [ "kgsl_iommu.c" ] }, "CONFIG_COMPAT": { True: [ "kgsl_compat.c", "adreno_compat.c" ] }, "CONFIG_DEBUG_FS": { True: [ "kgsl_debugfs.c", "adreno_debugfs.c", "adreno_profile.c" ] }, "CONFIG_QCOM_KGSL_CORESIGHT": { True: [ "adreno_coresight.c", "adreno_a3xx_coresight.c", "adreno_a5xx_coresight.c", "adreno_a6xx_coresight.c", "adreno_gen7_coresight.c"] }, "CONFIG_QCOM_KGSL_PROCESS_RECLAIM": { True: [ "kgsl_reclaim.c" ] }, "CONFIG_QCOM_KGSL_USE_SHMEM": { False: [ "kgsl_pool.c" ] }, "CONFIG_SYNC_FILE": { True: [ "kgsl_sync.c" ] }, }, deps = [ "//msm-kernel:all_headers" ] + ext_deps, includes = ["include", "."], kernel_build = kernel_build, visibility = ["//visibility:private"] ) copy_to_dist_dir( name = "{}_dist".format(rule_name), data = [rule_name], dist_dir = "out/graphics-kernel", flat = True, wipe_dist_dir = False, allow_duplicate_filenames = False, mode_overrides = {"**/*": "644"}, log = "info", ) def define_target_module(target): define_target_variant_module(target, "gki") define_target_variant_module(target, "consolidate")