input-assembler.py 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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 verifyInputLayouts(thefile, compilerPath, silent):
  15. j, ok = testfuncs.buildAndGetJson(thefile, compilerPath, silent, ["--ia"])
  16. if ok:
  17. predicates = []
  18. # check all references of func()
  19. predicates.append(lambda: len(j["inputLayouts"]) == 3)
  20. predicates.append(lambda: len(j["inputLayouts"][0]["streams"]) == 3)
  21. predicates.append(lambda: j["inputLayouts"][0]["streams"][0]["name"] == "m_position")
  22. predicates.append(lambda: j["inputLayouts"][0]["streams"][0]["semanticName"] == "POSITION")
  23. predicates.append(lambda: j["inputLayouts"][0]["streams"][0]["systemValue"] == False)
  24. predicates.append(lambda: j["inputLayouts"][0]["streams"][1]["name"] == "m_color")
  25. predicates.append(lambda: j["inputLayouts"][0]["streams"][1]["dimensions"][0] == 4)
  26. predicates.append(lambda: j["inputLayouts"][0]["streams"][1]["semanticName"] == "COLOR")
  27. predicates.append(lambda: j["inputLayouts"][0]["streams"][1]["systemValue"] == False)
  28. predicates.append(lambda: j["inputLayouts"][0]["streams"][2]["name"] == "vtxIndex")
  29. predicates.append(lambda: j["inputLayouts"][0]["streams"][2]["semanticName"] == "SV_VertexID")
  30. predicates.append(lambda: j["inputLayouts"][0]["streams"][2]["systemValue"] == True)
  31. predicates.append(lambda: len(j["inputLayouts"][1]["streams"]) == 10)
  32. predicates.append(lambda: j["inputLayouts"][1]["streams"][0]["name"] == "m_position")
  33. predicates.append(lambda: j["inputLayouts"][1]["streams"][0]["semanticName"] == "POSITION")
  34. predicates.append(lambda: j["inputLayouts"][1]["streams"][0]["systemValue"] == False)
  35. predicates.append(lambda: j["inputLayouts"][1]["streams"][9]["name"] == "instId")
  36. predicates.append(lambda: j["inputLayouts"][1]["streams"][9]["semanticName"] == "SV_InstanceID")
  37. predicates.append(lambda: j["inputLayouts"][1]["streams"][9]["systemValue"] == True)
  38. predicates.append(lambda: j["inputLayouts"][1]["streams"][8]["name"] == "vtxIndex")
  39. predicates.append(lambda: j["inputLayouts"][1]["streams"][8]["semanticName"] == "SV_VertexID")
  40. predicates.append(lambda: j["inputLayouts"][1]["streams"][8]["systemValue"] == True)
  41. predicates.append(lambda: len(j["inputLayouts"][2]["streams"]) == 2)
  42. predicates.append(lambda: j["inputLayouts"][2]["streams"][0]["name"] == "position")
  43. predicates.append(lambda: j["inputLayouts"][2]["streams"][0]["semanticName"] == "POSITION")
  44. predicates.append(lambda: j["inputLayouts"][2]["streams"][0]["systemValue"] == False)
  45. predicates.append(lambda: j["inputLayouts"][2]["streams"][1]["name"] == "color")
  46. predicates.append(lambda: j["inputLayouts"][2]["streams"][1]["semanticName"] == "COLOR")
  47. predicates.append(lambda: j["inputLayouts"][2]["streams"][1]["systemValue"] == False)
  48. if not silent: print (fg.CYAN+ style.BRIGHT+ "input assembler layouts verification..."+ style.RESET_ALL)
  49. ok = testfuncs.verifyAllPredicates(predicates, j)
  50. return ok
  51. result = 0 # to define for sub-tests
  52. resultFailed = 0
  53. def doTests(compiler, silent, azdxcpath):
  54. global result
  55. global resultFailed
  56. # Working directory should have been set to this script's directory by the calling parent
  57. # You can get it once doTests() is called, but not during initialization of the module,
  58. # because at that time it will still be set to the working directory of the calling script
  59. workDir = os.getcwd()
  60. if verifyInputLayouts(os.path.join(workDir, "input-assembler.azsl"), compiler, silent): result += 1
  61. else: resultFailed += 1
  62. if __name__ == "__main__":
  63. print ("please call from testapp.py")