Binary that renders a triangle using Vulkan and scans the resulting image to a PNG. To be used in developing Turnip.
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.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. SUBDIR = triangle
  2. NAME = triangle
  3. CFLAGS = -std=c++17 --sysroot="$(SYSROOT)" -Wall
  4. LDFLAGS = -lvulkan -lpng
  5. ifeq ($(target), cheza)
  6. CXX = /usr/bin/armv7a-cros-linux-gnueabihf-clang++
  7. CC = /usr/bin/armv7a-cros-linux-gnueabihf-clang
  8. SYSROOT = /build/cheza
  9. SSH_DUT = cheza
  10. TARGET = cheza
  11. else ifeq ($(target), atlas)
  12. CXX = /usr/bin/x86_64-cros-linux-gnu-clang++
  13. CC = /usr/bin/x86_64-cros-linux-gnu-clang
  14. SYSROOT = /build/atlas
  15. SSH_DUT = atlas
  16. TARGET = atlas
  17. else ifeq ($(target), android)
  18. ANDROID_ROOT = ~/android
  19. SSH_DUT = android
  20. TRACE = False
  21. TARGET = android
  22. else ifeq ($(target), android-trace)
  23. ANDROID_ROOT = ~/android
  24. SSH_DUT = android
  25. TRACE = True
  26. TARGET = android
  27. else ifeq ($(target), local)
  28. CXX = clang++
  29. CC = clang
  30. TARGET = local
  31. else
  32. CXX = INVALID
  33. CC = INVALID
  34. TARGET = INVALID
  35. endif
  36. all: shaders build deploy run
  37. build: check
  38. @echo Building...
  39. ifeq ($(TARGET), android)
  40. @NDK_PROJECT_PATH=. \
  41. NDK_ROOT=${ANDROID_ROOT}/ndk/ \
  42. TARGET_NAME=${NAME} \
  43. COMPILE_ROOT=${ANDROID_ROOT}/compile \
  44. ${ANDROID_ROOT}/ndk/ndk-build NDK_APPLICATION_MK=./Application.mk
  45. else
  46. @$(CXX) $(CFLAGS) -o ${NAME} ${NAME}.cc $(LDFLAGS)
  47. endif
  48. deploy: check
  49. @echo Deploying to $(SSH_DUT)...
  50. ifeq ($(TARGET), android)
  51. @adb push ${NAME}.vert.spv /data/vulkan/${SUBDIR}/${NAME}.vert.spv
  52. @adb push ${NAME}.frag.spv /data/vulkan/${SUBDIR}/${NAME}.frag.spv
  53. @adb push libs/arm64-v8a/${NAME} /data/vulkan/${SUBDIR}/
  54. else ifneq ($(TARGET), local)
  55. @scp ${NAME}.vert.spv $(SSH_DUT):~/${SUBDIR}/${NAME}.vert.spv
  56. @scp ${NAME}.frag.spv $(SSH_DUT):~/${SUBDIR}/${NAME}.frag.spv
  57. @scp ${NAME} $(SSH_DUT):~/${SUBDIR}/
  58. endif
  59. run: check
  60. ifeq ($(TARGET), android)
  61. @echo Running on $(SSH_DUT)...
  62. ifeq ($(TRACE), True)
  63. @adb shell "cd /data/vulkan/${SUBDIR} && LD_PRELOAD=/data/vulkan/libwrap.so ./${NAME}"
  64. @echo Copying artifacts back to local device...
  65. @adb pull /data/vulkan/${SUBDIR}/${NAME}.png .
  66. @adb pull /sdcard/trace.rd .
  67. else
  68. @adb shell "cd /data/vulkan/${SUBDIR} && ./${NAME}"
  69. @echo Copying artifacts back to local device...
  70. @adb pull /data/vulkan/${SUBDIR}/${NAME}.png .
  71. endif
  72. else ifneq ($(TARGET), local)
  73. @echo Running on $(SSH_DUT)...
  74. @ssh $(SSH_DUT) 'cd ~/${SUBDIR} && ./${NAME}'
  75. @echo Copying artifacts back to local device...
  76. @scp $(SSH_DUT):~/${SUBDIR}/${NAME}.png .
  77. else
  78. @echo Running locally...
  79. @./$(NAME)
  80. endif
  81. shaders:
  82. @glslc -c ${NAME}.vert
  83. @glslc -c ${NAME}.frag
  84. clean: check
  85. @rm -f ${NAME}
  86. @rm -f ${NAME}.png
  87. @rm -f ${NAME}.vert.spv
  88. @rm -f ${NAME}.frag.spv
  89. @rm -f trace.rd
  90. @rm -rf libs
  91. @rm -rf obj
  92. ifneq ($(TARGET), local)
  93. ifeq ($(TARGET), android)
  94. @adb shell rm /data/vulkan/${SUBDIR}/*
  95. else
  96. @ssh $(SSH_DUT) 'rm -f ~/${SUBDIR}/${NAME} ~/${SUBDIR}/${NAME}.vert.spv \
  97. ~/${SUBDIR}/${NAME}.frag.spv ~/${SUBDIR}/${NAME}.png'
  98. endif
  99. endif
  100. check:
  101. ifeq ($(TARGET), INVALID)
  102. $(error $$target must be one of [atlas, cheza, android, android-trace, local])
  103. endif