주의 : 초심자 튜토리얼은 아닙니다. 그러므로, 실제 API 호출 용례를 알고자 한다면, 샘플이나 튜토리얼을 찾아서 확인해 보세요.
주의 : 완전히 이해하고 작성한 글이 아니므로 잘못된 내용이 포함되어 있을 수 있습니다.
주의 : 이상하면 참고자료를 확인하세요.
문제점
[ 2. DXC 빌드 ] 에서 "dxc.exe" 를 빌드하는 과정에 대해서 살펴 봤습니다.
그 이후에 어떤 옵션들이 있는지 확인하기 위해서 코드를 한 번 살펴 봤습니다. 그런데 ENABLE_SPIRV_CODEGEN 이라는 preprocess definition 이 하나 보이더군요.
이게 비활성화되어 있었습니다.
프로젝트 구성에서 추가를 할까 했는데 그냥 [ 1 ] 의 가이드라인을 따라 정상적으로 빌드해 보기로 했습니다.
CMAKE 솔루션 재생성
일단 [ 2. DXC 빌드 ] 과정까지 거쳤기 때문에 TAEF 를 다시 설치하거나 할 필요는 없습니다. 단지 프로젝트를 다시 만들어줘야 할 뿐입니다.
HLSL console 을 띄운 다음에 다음과 같이 "-spirv" 옵션만 추가해서 "hctbuild.cmd" 를 실행해 주면 됩니다.
이러면 열심히 CMAKE 프로젝트를 만들고 빌드합니다.
"LLVM.sln" 솔루션을 열어 봤더니 새로운 프로젝트들이 추가된 것 같더군요.
Trouble Shooting
역시나 이것도 한 번에 빌드가 안 되는군요.
에러가 4 개인 것처럼 보이지만 사실 SPIRV-Tools.lib 를 못 찾는 건 그냥 결과입니다. 근본적인 문제는 첫 번째 에러에 있습니다.
18>Traceback (most recent call last):
18> File "C:/GIt/DirectXShaderCompiler/external/SPIRV-Tools/utils/update_build_version.py", line 148, in <module>
18> main()
18> File "C:/GIt/DirectXShaderCompiler/external/SPIRV-Tools/utils/update_build_version.py", line 134, in main
18> software_version = deduce_software_version(sys.argv[1])
18> File "C:/GIt/DirectXShaderCompiler/external/SPIRV-Tools/utils/update_build_version.py", line 90, in deduce_software_version
18> for line in f.readlines():
18>UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 846: illegal multibyte sequence
18>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(209,5): error MSB6006: "cmd.exe" exited with code 1.
원인을 찾아 봤는데 "update_build_version.py" 파일의 90 라인에서 읽고 있는 뭔가가 "cp949" 코덱으로 인코딩되어 있었기 때문입니다.
그러므로 89 라인의 open() 함수에서 "UTF-8" 로 인코딩을 바꿔주고 이제 사용하지 않는 옵션인 "U" 를 제거하고 "t" 로 바꿔 줍니다.
이제 빌드가 잘 됩니다.
참고자료
[ 1 ] SPIR-V CodeGen, DirectXShaderCompiler.
'Vulkan & OpenGL' 카테고리의 다른 글
[ 번역 ] Vulkan Debug Utilities (0) | 2019.09.16 |
---|---|
[ Vulkan 연구 ] HLSL to SPIR-V : 7. Interface Block & Layout Qualifiers (2) | 2019.09.14 |
[ Vulkan 연구 ] HLSL to SPIR-V : 6. spirv-reflect 소개 (0) | 2019.08.25 |
[ Vulkan 연구 ] HLSL to SPIR-V : 5. DXC 기본 옵션 분석 (0) | 2019.08.12 |
[ Vulkan 연구 ] HLSL to SPIR-V : 4. DXC 필수 바이너리 및 기본 테스트 (0) | 2019.08.11 |
[ Vulkan 연구 ] HLSL to SPIR-V : 2. DXC 빌드 (0) | 2019.08.10 |
[ Vulkan 연구 ] HLSL to SPIR-V : 1. Tool-Chain (2) | 2019.08.10 |
[ Vulkan 연구 ] RenderPass 개념 (2) | 2019.06.23 |
[ Vulkan 연구 ] 번역 : AMD GRAPHICS CORES NEXT (GCN) ARCHITECTURE (2) | 2019.05.11 |
[ Vulkan 연구 ] WPF NodeGraph 라이브러리 구현 (0) | 2019.03.04 |