kgsl_defs.bzl 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
  2. load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
  3. msm_kgsl_includes = [
  4. "include/linux/msm_kgsl.h",
  5. "include/uapi/linux/msm_kgsl.h",
  6. ]
  7. def kgsl_get_srcs():
  8. srcs = [
  9. "adreno.c",
  10. "adreno_a3xx.c",
  11. "adreno_a3xx_perfcounter.c",
  12. "adreno_a3xx_ringbuffer.c",
  13. "adreno_a3xx_snapshot.c",
  14. "adreno_a5xx.c",
  15. "adreno_a5xx_perfcounter.c",
  16. "adreno_a5xx_preempt.c",
  17. "adreno_a5xx_ringbuffer.c",
  18. "adreno_a5xx_snapshot.c",
  19. "adreno_a6xx.c",
  20. "adreno_a6xx_gmu.c",
  21. "adreno_a6xx_gmu_snapshot.c",
  22. "adreno_a6xx_hfi.c",
  23. "adreno_a6xx_hwsched.c",
  24. "adreno_a6xx_hwsched_hfi.c",
  25. "adreno_a6xx_perfcounter.c",
  26. "adreno_a6xx_preempt.c",
  27. "adreno_a6xx_rgmu.c",
  28. "adreno_a6xx_ringbuffer.c",
  29. "adreno_a6xx_rpmh.c",
  30. "adreno_a6xx_snapshot.c",
  31. "adreno_cp_parser.c",
  32. "adreno_dispatch.c",
  33. "adreno_drawctxt.c",
  34. "adreno_gen7.c",
  35. "adreno_gen7_gmu.c",
  36. "adreno_gen7_gmu_snapshot.c",
  37. "adreno_gen7_hfi.c",
  38. "adreno_gen7_hwsched.c",
  39. "adreno_gen7_hwsched_hfi.c",
  40. "adreno_gen7_perfcounter.c",
  41. "adreno_gen7_preempt.c",
  42. "adreno_gen7_ringbuffer.c",
  43. "adreno_gen7_rpmh.c",
  44. "adreno_gen7_snapshot.c",
  45. "adreno_gen8.c",
  46. "adreno_gen8_gmu.c",
  47. "adreno_gen8_gmu_snapshot.c",
  48. "adreno_gen8_hfi.c",
  49. "adreno_gen8_hwsched.c",
  50. "adreno_gen8_hwsched_hfi.c",
  51. "adreno_gen8_perfcounter.c",
  52. "adreno_gen8_preempt.c",
  53. "adreno_gen8_ringbuffer.c",
  54. "adreno_gen8_rpmh.c",
  55. "adreno_gen8_snapshot.c",
  56. "adreno_hwsched.c",
  57. "adreno_ioctl.c",
  58. "adreno_perfcounter.c",
  59. "adreno_ringbuffer.c",
  60. "adreno_snapshot.c",
  61. "adreno_sysfs.c",
  62. "adreno_trace.c",
  63. "governor_msm_adreno_tz.c",
  64. "governor_gpubw_mon.c",
  65. "kgsl.c",
  66. "kgsl_bus.c",
  67. "kgsl_drawobj.c",
  68. "kgsl_events.c",
  69. "kgsl_eventlog.c",
  70. "kgsl_gmu_core.c",
  71. "kgsl_ioctl.c",
  72. "kgsl_mmu.c",
  73. "kgsl_pwrctrl.c",
  74. "kgsl_pwrscale.c",
  75. "kgsl_regmap.c",
  76. "kgsl_sharedmem.c",
  77. "kgsl_snapshot.c",
  78. "kgsl_timeline.c",
  79. "kgsl_trace.c",
  80. "kgsl_util.c",
  81. "kgsl_vbo.c",
  82. ]
  83. srcs = srcs + native.glob(["*.h"]) + msm_kgsl_includes
  84. return srcs
  85. def external_deps(target, variant):
  86. tv = "{}_{}".format(target, variant)
  87. deplist = []
  88. defconfigs = []
  89. # Add msm_hw_fence in the dependency and defconfig lists for targets that use it
  90. if target in [ "pineapple" ]:
  91. deplist = deplist + [
  92. "//vendor/qcom/opensource/mm-drivers/hw_fence:{}_msm_hw_fence".format(tv)
  93. ]
  94. defconfigs = defconfigs + [
  95. "//vendor/qcom/opensource/mm-drivers/hw_fence:defconfig"
  96. ]
  97. native.genrule(
  98. name = "{}_defconfig".format(tv),
  99. srcs = defconfigs + [ "config/{}_gpuconf".format(tv) ],
  100. outs = [ "{}_defconfig.generated".format(tv) ],
  101. cmd = "cat $(SRCS) > $@"
  102. )
  103. return deplist
  104. def define_target_variant_module(target, variant):
  105. tv = "{}_{}".format(target, variant)
  106. rule_name = "{}_msm_kgsl".format(tv)
  107. kernel_build = "//msm-kernel:{}".format(tv)
  108. ext_deps = external_deps(target, variant)
  109. ddk_module(
  110. name = rule_name,
  111. out = "msm_kgsl.ko",
  112. srcs = kgsl_get_srcs(),
  113. defconfig = "{}_defconfig".format(tv),
  114. kconfig = "Kconfig",
  115. conditional_srcs = {
  116. "CONFIG_ARM_SMMU": { True: [ "kgsl_iommu.c" ] },
  117. "CONFIG_COMPAT": { True: [ "kgsl_compat.c", "adreno_compat.c" ] },
  118. "CONFIG_DEBUG_FS": { True: [ "kgsl_debugfs.c", "adreno_debugfs.c", "adreno_profile.c" ] },
  119. "CONFIG_QCOM_KGSL_CORESIGHT": { True: [
  120. "adreno_coresight.c",
  121. "adreno_a3xx_coresight.c",
  122. "adreno_a5xx_coresight.c",
  123. "adreno_a6xx_coresight.c",
  124. "adreno_gen7_coresight.c"] },
  125. "CONFIG_QCOM_KGSL_PROCESS_RECLAIM": { True: [ "kgsl_reclaim.c" ] },
  126. "CONFIG_QCOM_KGSL_USE_SHMEM": { False: [ "kgsl_pool.c" ] },
  127. "CONFIG_SYNC_FILE": { True: [ "kgsl_sync.c" ] },
  128. },
  129. deps = [ "//msm-kernel:all_headers" ] + ext_deps,
  130. includes = ["include", "."],
  131. kernel_build = kernel_build,
  132. visibility = ["//visibility:private"]
  133. )
  134. copy_to_dist_dir(
  135. name = "{}_dist".format(rule_name),
  136. data = [rule_name],
  137. dist_dir = "out/graphics-kernel",
  138. flat = True,
  139. wipe_dist_dir = False,
  140. allow_duplicate_filenames = False,
  141. mode_overrides = {"**/*": "644"},
  142. log = "info",
  143. )
  144. def define_target_module(target):
  145. define_target_variant_module(target, "gki")
  146. define_target_variant_module(target, "consolidate")