output-merger.py 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. """
  4. Copyright (c) Contributors to the Open 3D Engine Project.
  5. For complete copyright and license terms please see the LICENSE at the root of this distribution.
  6. SPDX-License-Identifier: Apache-2.0 OR MIT
  7. """
  8. import sys
  9. import os
  10. sys.path.append("..")
  11. sys.path.append("../..")
  12. from clr import *
  13. import testfuncs
  14. def verifyOutputFormats(thefile, compilerPath, silent):
  15. j, ok = testfuncs.buildAndGetJson(thefile, compilerPath, silent, ["--om"])
  16. if ok:
  17. predicates = []
  18. # check all references of func()
  19. predicates.append(lambda: len(j["outputLayouts"]) == 12)
  20. predicates.append(lambda: len(j["outputLayouts"][0]["renderTargets"]) == 1)
  21. predicates.append(lambda: j["outputLayouts"][0]["entry"] == "MainPS_1_1")
  22. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][0]["semanticName"] == "SV_Target")
  23. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][0]["semanticIndex"] == 0)
  24. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][0]["format"] == "R16G16B16A16_FLOAT")
  25. predicates.append(lambda: len(j["outputLayouts"][1]["renderTargets"]) == 1)
  26. predicates.append(lambda: j["outputLayouts"][1]["entry"] == "MainPS_1_2")
  27. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][0]["semanticName"] == "SV_Target")
  28. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][0]["semanticIndex"] == 1)
  29. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][0]["format"] == "R16G16B16A16_FLOAT")
  30. predicates.append(lambda: len(j["outputLayouts"][2]["renderTargets"]) == 1)
  31. predicates.append(lambda: j["outputLayouts"][2]["entry"] == "MainPS_1_3")
  32. predicates.append(lambda: j["outputLayouts"][2]["renderTargets"][0]["semanticName"] == "SV_Target")
  33. predicates.append(lambda: j["outputLayouts"][2]["renderTargets"][0]["semanticIndex"] == 0)
  34. predicates.append(lambda: j["outputLayouts"][2]["renderTargets"][0]["format"] == "R16G16B16A16_FLOAT")
  35. predicates.append(lambda: len(j["outputLayouts"][3]["renderTargets"]) == 1)
  36. predicates.append(lambda: j["outputLayouts"][3]["entry"] == "MainPS_1_4")
  37. predicates.append(lambda: j["outputLayouts"][3]["renderTargets"][0]["semanticName"] == "SV_Depth")
  38. predicates.append(lambda: j["outputLayouts"][3]["renderTargets"][0]["semanticIndex"] == 0)
  39. predicates.append(lambda: j["outputLayouts"][3]["renderTargets"][0]["format"] == "R32")
  40. predicates.append(lambda: len(j["outputLayouts"][4]["renderTargets"]) == 1)
  41. predicates.append(lambda: j["outputLayouts"][4]["entry"] == "MainPS_1_5")
  42. predicates.append(lambda: j["outputLayouts"][4]["renderTargets"][0]["semanticName"] == "SV_Depth")
  43. predicates.append(lambda: j["outputLayouts"][4]["renderTargets"][0]["semanticIndex"] == 0)
  44. predicates.append(lambda: j["outputLayouts"][4]["renderTargets"][0]["format"] == "R32")
  45. predicates.append(lambda: len(j["outputLayouts"][5]["renderTargets"]) == 1)
  46. predicates.append(lambda: j["outputLayouts"][5]["entry"] == "MainPS_1_8")
  47. predicates.append(lambda: j["outputLayouts"][5]["renderTargets"][0]["semanticName"] == "SV_Target")
  48. predicates.append(lambda: j["outputLayouts"][5]["renderTargets"][0]["semanticIndex"] == 0)
  49. predicates.append(lambda: j["outputLayouts"][5]["renderTargets"][0]["format"] == "R16G16B16A16_FLOAT")
  50. predicates.append(lambda: len(j["outputLayouts"][6]["renderTargets"]) == 1)
  51. predicates.append(lambda: j["outputLayouts"][6]["entry"] == "MainPS_2_1")
  52. predicates.append(lambda: j["outputLayouts"][6]["renderTargets"][0]["semanticName"] == "SV_Target")
  53. predicates.append(lambda: j["outputLayouts"][6]["renderTargets"][0]["semanticIndex"] == 0)
  54. predicates.append(lambda: j["outputLayouts"][6]["renderTargets"][0]["format"] == "R16G16B16A16_FLOAT")
  55. predicates.append(lambda: len(j["outputLayouts"][7]["renderTargets"]) == 8)
  56. predicates.append(lambda: j["outputLayouts"][7]["entry"] == "MainPS_2_2")
  57. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][0]["semanticName"] == "SV_Target")
  58. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][0]["semanticIndex"] == 0)
  59. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][0]["format"] == "R16G16B16A16_FLOAT")
  60. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][1]["semanticName"] == "SV_Target")
  61. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][1]["semanticIndex"] == 1)
  62. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][1]["format"] == "R16G16B16A16_FLOAT")
  63. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][2]["semanticName"] == "SV_Target")
  64. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][2]["semanticIndex"] == 2)
  65. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][2]["format"] == "R16G16B16A16_FLOAT")
  66. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][3]["semanticName"] == "SV_Target")
  67. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][3]["semanticIndex"] == 3)
  68. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][3]["format"] == "R16G16B16A16_FLOAT")
  69. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][4]["semanticName"] == "SV_Target")
  70. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][4]["semanticIndex"] == 4)
  71. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][4]["format"] == "R16G16B16A16_FLOAT")
  72. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][5]["semanticName"] == "SV_Target")
  73. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][5]["semanticIndex"] == 5)
  74. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][5]["format"] == "R16G16B16A16_FLOAT")
  75. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][6]["semanticName"] == "SV_Target")
  76. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][6]["semanticIndex"] == 6)
  77. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][6]["format"] == "R16G16B16A16_FLOAT")
  78. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][7]["semanticName"] == "SV_Target")
  79. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][7]["semanticIndex"] == 7)
  80. predicates.append(lambda: j["outputLayouts"][7]["renderTargets"][7]["format"] == "R16G16B16A16_FLOAT")
  81. predicates.append(lambda: len(j["outputLayouts"][8]["renderTargets"]) == 8)
  82. predicates.append(lambda: j["outputLayouts"][8]["entry"] == "MainPS_2_3")
  83. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][0]["semanticName"] == "SV_Target")
  84. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][0]["semanticIndex"] == 3)
  85. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][0]["format"] == "R16G16B16A16_FLOAT")
  86. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][1]["semanticName"] == "SV_Target")
  87. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][1]["semanticIndex"] == 4)
  88. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][1]["format"] == "R16G16B16A16_FLOAT")
  89. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][2]["semanticName"] == "SV_Target")
  90. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][2]["semanticIndex"] == 1)
  91. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][2]["format"] == "R16G16B16A16_FLOAT")
  92. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][3]["semanticName"] == "SV_Target")
  93. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][3]["semanticIndex"] == 6)
  94. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][3]["format"] == "R16G16B16A16_FLOAT")
  95. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][4]["semanticName"] == "SV_Target")
  96. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][4]["semanticIndex"] == 7)
  97. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][4]["format"] == "R16G16B16A16_FLOAT")
  98. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][5]["semanticName"] == "SV_Target")
  99. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][5]["semanticIndex"] == 5)
  100. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][5]["format"] == "R16G16B16A16_FLOAT")
  101. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][6]["semanticName"] == "SV_Target")
  102. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][6]["semanticIndex"] == 0)
  103. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][6]["format"] == "R16G16B16A16_FLOAT")
  104. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][7]["semanticName"] == "SV_Target")
  105. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][7]["semanticIndex"] == 2)
  106. predicates.append(lambda: j["outputLayouts"][8]["renderTargets"][7]["format"] == "R16G16B16A16_FLOAT")
  107. predicates.append(lambda: len(j["outputLayouts"][9]["renderTargets"]) == 8)
  108. predicates.append(lambda: j["outputLayouts"][9]["entry"] == "MainPS_2_3A")
  109. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][0]["semanticName"] == "SV_Target")
  110. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][0]["semanticIndex"] == 0)
  111. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][0]["format"] == "R16G16B16A16_FLOAT")
  112. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][1]["semanticName"] == "SV_Target")
  113. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][1]["semanticIndex"] == 1)
  114. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][1]["format"] == "R16G16B16A16_FLOAT")
  115. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][2]["semanticName"] == "SV_Target")
  116. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][2]["semanticIndex"] == 2)
  117. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][2]["format"] == "R16G16B16A16_FLOAT")
  118. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][3]["semanticName"] == "SV_Target")
  119. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][3]["semanticIndex"] == 3)
  120. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][3]["format"] == "R16G16B16A16_FLOAT")
  121. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][4]["semanticName"] == "SV_Target")
  122. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][4]["semanticIndex"] == 4)
  123. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][4]["format"] == "R16G16B16A16_FLOAT")
  124. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][5]["semanticName"] == "SV_Target")
  125. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][5]["semanticIndex"] == 5)
  126. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][5]["format"] == "R16G16B16A16_FLOAT")
  127. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][6]["semanticName"] == "SV_Target")
  128. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][6]["semanticIndex"] == 6)
  129. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][6]["format"] == "R16G16B16A16_FLOAT")
  130. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][7]["semanticName"] == "SV_Target")
  131. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][7]["semanticIndex"] == 7)
  132. predicates.append(lambda: j["outputLayouts"][9]["renderTargets"][7]["format"] == "R16G16B16A16_FLOAT")
  133. predicates.append(lambda: len(j["outputLayouts"][10]["renderTargets"]) == 2)
  134. predicates.append(lambda: j["outputLayouts"][10]["entry"] == "MainPS1")
  135. predicates.append(lambda: j["outputLayouts"][10]["renderTargets"][0]["semanticName"] == "SV_Target")
  136. predicates.append(lambda: j["outputLayouts"][10]["renderTargets"][0]["semanticIndex"] == 0)
  137. predicates.append(lambda: j["outputLayouts"][10]["renderTargets"][0]["format"] == "R16G16B16A16_FLOAT")
  138. predicates.append(lambda: j["outputLayouts"][10]["renderTargets"][1]["semanticName"] == "SV_Target")
  139. predicates.append(lambda: j["outputLayouts"][10]["renderTargets"][1]["semanticIndex"] == 1)
  140. predicates.append(lambda: j["outputLayouts"][10]["renderTargets"][1]["format"] == "R16G16B16A16_FLOAT")
  141. predicates.append(lambda: len(j["outputLayouts"][11]["renderTargets"]) == 11)
  142. predicates.append(lambda: j["outputLayouts"][11]["entry"] == "MainPS_All")
  143. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 0]["semanticName"] == "SV_Target")
  144. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 0]["semanticIndex"] == 0)
  145. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 0]["format"] == "R16G16B16A16_FLOAT")
  146. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 1]["semanticName"] == "SV_Target")
  147. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 1]["semanticIndex"] == 1)
  148. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 1]["format"] == "R16G16B16A16_FLOAT")
  149. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 2]["semanticName"] == "SV_Target")
  150. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 2]["semanticIndex"] == 2)
  151. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 2]["format"] == "R16G16B16A16_FLOAT")
  152. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 3]["semanticName"] == "SV_Target")
  153. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 3]["semanticIndex"] == 3)
  154. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 3]["format"] == "R16G16B16A16_FLOAT")
  155. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 4]["semanticName"] == "SV_Target")
  156. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 4]["semanticIndex"] == 4)
  157. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 4]["format"] == "R16G16B16A16_FLOAT")
  158. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 5]["semanticName"] == "SV_Target")
  159. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 5]["semanticIndex"] == 5)
  160. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 5]["format"] == "R16G16B16A16_FLOAT")
  161. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 6]["semanticName"] == "SV_Target")
  162. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 6]["semanticIndex"] == 6)
  163. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 6]["format"] == "R16G16B16A16_FLOAT")
  164. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 7]["semanticName"] == "SV_Target")
  165. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 7]["semanticIndex"] == 7)
  166. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 7]["format"] == "R16G16B16A16_FLOAT")
  167. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 8]["semanticName"] == "SV_Coverage")
  168. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 8]["semanticIndex"] == 0)
  169. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 8]["format"] == "R32")
  170. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 9]["semanticName"] == "SV_StencilRef")
  171. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 9]["semanticIndex"] == 0)
  172. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][ 9]["format"] == "R32")
  173. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][10]["semanticName"] == "SV_Depth")
  174. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][10]["semanticIndex"] == 0)
  175. predicates.append(lambda: j["outputLayouts"][11]["renderTargets"][10]["format"] == "R32")
  176. if not silent: print (fg.CYAN+ style.BRIGHT+ "input assembler layouts verification..."+ style.RESET_ALL)
  177. ok = testfuncs.verifyAllPredicates(predicates, j)
  178. return True if ok else False
  179. def verifyOutputFormatsAttr(thefile, compilerPath, silent):
  180. j, ok = testfuncs.buildAndGetJson(thefile, compilerPath, silent, ["--om"])
  181. if ok:
  182. predicates = []
  183. # check all references of func()
  184. predicates.append(lambda: len(j["outputLayouts"]) == 2)
  185. predicates.append(lambda: len(j["outputLayouts"][0]["renderTargets"]) == 8)
  186. predicates.append(lambda: j["outputLayouts"][0]["entry"] == "MainPS_All")
  187. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][0]["semanticName"] == "SV_Target")
  188. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][0]["semanticIndex"] == 0)
  189. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][0]["format"] == "R32")
  190. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][1]["semanticName"] == "SV_Target")
  191. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][1]["semanticIndex"] == 1)
  192. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][1]["format"] == "R32G32")
  193. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][2]["semanticName"] == "SV_Target")
  194. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][2]["semanticIndex"] == 2)
  195. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][2]["format"] == "R32A32")
  196. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][3]["semanticName"] == "SV_Target")
  197. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][3]["semanticIndex"] == 3)
  198. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][3]["format"] == "R16G16B16A16_UNORM")
  199. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][4]["semanticName"] == "SV_Target")
  200. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][4]["semanticIndex"] == 4)
  201. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][4]["format"] == "R16G16B16A16_SNORM")
  202. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][5]["semanticName"] == "SV_Target")
  203. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][5]["semanticIndex"] == 5)
  204. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][5]["format"] == "R16G16B16A16_UINT")
  205. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][6]["semanticName"] == "SV_Target")
  206. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][6]["semanticIndex"] == 6)
  207. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][6]["format"] == "R16G16B16A16_SINT")
  208. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][7]["semanticName"] == "SV_Target")
  209. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][7]["semanticIndex"] == 7)
  210. predicates.append(lambda: j["outputLayouts"][0]["renderTargets"][7]["format"] == "R32G32B32A32")
  211. predicates.append(lambda: len(j["outputLayouts"][1]["renderTargets"]) == 4)
  212. predicates.append(lambda: j["outputLayouts"][1]["entry"] == "MainPS_Half")
  213. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][0]["semanticName"] == "SV_Target")
  214. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][0]["semanticIndex"] == 0)
  215. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][0]["format"] == "R32")
  216. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][1]["semanticName"] == "SV_Target")
  217. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][1]["semanticIndex"] == 1)
  218. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][1]["format"] == "R32G32")
  219. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][2]["semanticName"] == "SV_Target")
  220. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][2]["semanticIndex"] == 2)
  221. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][2]["format"] == "R32A32")
  222. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][3]["semanticName"] == "SV_Target")
  223. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][3]["semanticIndex"] == 3)
  224. predicates.append(lambda: j["outputLayouts"][1]["renderTargets"][3]["format"] == "R16G16B16A16_UNORM")
  225. if not silent: print (fg.CYAN+ style.BRIGHT+ "input assembler layouts verification..."+ style.RESET_ALL)
  226. ok = testfuncs.verifyAllPredicates(predicates, j)
  227. return True if ok else False
  228. result = 0 # to define for sub-tests
  229. resultFailed = 0
  230. def doTests(compiler, silent, azdxcpath):
  231. global result
  232. global resultFailed
  233. # Working directory should have been set to this script's directory by the calling parent
  234. # You can get it once doTests() is called, but not during initialization of the module,
  235. # because at that time it will still be set to the working directory of the calling script
  236. workDir = os.getcwd()
  237. if verifyOutputFormats(os.path.join(workDir, "../Samples/PixelShaderOutput.azsl"), compiler, silent) : result += 1
  238. else: resultFailed += 1
  239. if verifyOutputFormatsAttr(os.path.join(workDir, "../Samples/PixelShaderOutputAttributes.azsl"), compiler, silent) : result += 1
  240. else: resultFailed += 1
  241. if __name__ == "__main__":
  242. print ("please call from testapp.py")