diff --git a/bgfx b/bgfx index d9d99f5..cded7e8 160000 --- a/bgfx +++ b/bgfx @@ -1 +1 @@ -Subproject commit d9d99f51ad456a8da3797c28cc7d1a24dcbdce79 +Subproject commit cded7e8d6cb9fa2f1077ead4ead20faf8c3a53dc diff --git a/bx b/bx index 01cf049..a5ce3be 160000 --- a/bx +++ b/bx @@ -1 +1 @@ -Subproject commit 01cf049f97e122901aef231dcb9d54a1a3b86e5b +Subproject commit a5ce3bed947ab1c9e386f1c98f0ed66cf4eb410f diff --git a/cmake/bgfx/3rdparty/glslang.cmake b/cmake/bgfx/3rdparty/glslang.cmake index e6169ed..048cc87 100644 --- a/cmake/bgfx/3rdparty/glslang.cmake +++ b/cmake/bgfx/3rdparty/glslang.cmake @@ -55,9 +55,10 @@ set_target_properties(glslang PROPERTIES FOLDER "bgfx") target_include_directories( glslang - PUBLIC ${GLSLANG} # - ${GLSLANG}/glslang/Public # - PRIVATE ${GLSLANG}/.. # - ${SPIRV_TOOLS}/include # - ${SPIRV_TOOLS}/source # + PUBLIC ${GLSLANG} + ${GLSLANG}/glslang/Public + ${GLSLANG}/glslang/Include + PRIVATE ${GLSLANG}/.. + ${SPIRV_TOOLS}/include + ${SPIRV_TOOLS}/source ) diff --git a/cmake/bgfx/3rdparty/tint.cmake b/cmake/bgfx/3rdparty/tint.cmake new file mode 100644 index 0000000..eb86f57 --- /dev/null +++ b/cmake/bgfx/3rdparty/tint.cmake @@ -0,0 +1,98 @@ +# bgfx.cmake - bgfx building in cmake +# Written in 2017 by Joshua Brookover +# +# To the extent possible under law, the author(s) have dedicated all copyright +# and related and neighboring rights to this software to the public domain +# worldwide. This software is distributed without any warranty. +# +# You should have received a copy of the CC0 Public Domain Dedication along with +# this software. If not, see . + +if(TARGET tint) + return() +endif() + +if(NOT IS_DIRECTORY ${BGFX_DIR}) + message(SEND_ERROR "Could not load bgfx, directory does not exist. ${BGFX_DIR}") + return() +endif() + +set(TINT_DIR ${BGFX_DIR}/3rdparty/dawn) +set(SPIRV_HEADERS ${BGFX_DIR}/3rdparty/spirv-headers) +set(SPIRV_TOOLS ${BGFX_DIR}/3rdparty/spirv-tools) + +file( + GLOB_RECURSE + TINT_SOURCES + ${TINT_DIR}/src/tint/utils/*.cc + ${TINT_DIR}/src/tint/utils/*.h + ${TINT_DIR}/src/tint/lang/core/*.cc + ${TINT_DIR}/src/tint/lang/core/*.h + ${TINT_DIR}/src/tint/lang/null/*.cc + ${TINT_DIR}/src/tint/lang/null/*.h + ${TINT_DIR}/src/tint/lang/spirv/*.cc + ${TINT_DIR}/src/tint/lang/spirv/*.h + ${TINT_DIR}/src/tint/lang/wgsl/*.cc + ${TINT_DIR}/src/tint/lang/wgsl/*.h + ${TINT_DIR}/src/tint/api/*.cc + ${TINT_DIR}/src/tint/api/*.h +) + +add_library(tint STATIC ${TINT_SOURCES}) + +set_target_properties(tint PROPERTIES FOLDER "bgfx") + +target_include_directories( + tint + PUBLIC ${TINT_DIR} + ${TINT_DIR}/src/tint + PRIVATE ${TINT_DIR}/third_party/protobuf/src + ${TINT_DIR}/third_party/abseil-cpp + ${SPIRV_TOOLS} + ${SPIRV_TOOLS}/include + ${SPIRV_TOOLS}/include/generated + ${SPIRV_HEADERS}/include +) + +target_compile_definitions( + tint + PRIVATE TINT_BUILD_GLSL_WRITER=0 + TINT_BUILD_HLSL_WRITER=0 + TINT_BUILD_MSL_WRITER=0 + TINT_BUILD_NULL_WRITER=0 + TINT_BUILD_SPV_READER=1 + TINT_BUILD_SPV_WRITER=0 + TINT_BUILD_WGSL_READER=0 + TINT_BUILD_WGSL_WRITER=1 + TINT_ENABLE_IR_VALIDATION=0 +) + +if(WIN32) + target_compile_definitions( + tint + PRIVATE TINT_BUILD_IS_LINUX=0 + TINT_BUILD_IS_MAC=0 + TINT_BUILD_IS_WIN=1 + ) +elseif(APPLE) + target_compile_definitions( + tint + PRIVATE TINT_BUILD_IS_LINUX=0 + TINT_BUILD_IS_MAC=1 + TINT_BUILD_IS_WIN=0 + ) +else() + target_compile_definitions( + tint + PRIVATE TINT_BUILD_IS_LINUX=1 + TINT_BUILD_IS_MAC=0 + TINT_BUILD_IS_WIN=0 + ) +endif() + +if(MSVC) + target_compile_options( + tint + PRIVATE "/Zc:preprocessor" + ) +endif() diff --git a/cmake/bgfx/CMakeLists.txt b/cmake/bgfx/CMakeLists.txt index 0125da3..4537e95 100644 --- a/cmake/bgfx/CMakeLists.txt +++ b/cmake/bgfx/CMakeLists.txt @@ -26,6 +26,7 @@ if(BGFX_BUILD_TOOLS_SHADER) include(3rdparty/glsl-optimizer.cmake) include(3rdparty/fcpp.cmake) include(3rdparty/webgpu.cmake) + include(3rdparty/tint.cmake) include(shaderc.cmake) endif() diff --git a/cmake/bgfx/examples.cmake b/cmake/bgfx/examples.cmake index c8759f0..20e4ad7 100755 --- a/cmake/bgfx/examples.cmake +++ b/cmake/bgfx/examples.cmake @@ -31,6 +31,8 @@ function(add_bgfx_shader FILE FOLDER) set(COMMON FILE ${FILE} ${TYPE} INCLUDES ${BGFX_DIR}/src) set(OUTPUTS "") set(OUTPUTS_PRETTY "") + set(OUTPUT_FILES "") + set(COMMANDS "") if(WIN32) # dx11 @@ -85,11 +87,15 @@ function(add_bgfx_shader FILE FOLDER) set(SPIRV_OUTPUT ${BGFX_DIR}/examples/runtime/shaders/spirv/${FILENAME}.bin) _bgfx_shaderc_parse(SPIRV ${COMMON} LINUX PROFILE spirv OUTPUT ${SPIRV_OUTPUT}) list(APPEND OUTPUTS "SPIRV") - set(OUTPUTS_PRETTY "${OUTPUTS_PRETTY}SPIRV") - set(OUTPUT_FILES "") - set(COMMANDS "") + set(OUTPUTS_PRETTY "${OUTPUTS_PRETTY}SPIRV, ") endif() + # wgsl + set(WGSL_OUTPUT ${BGFX_DIR}/examples/runtime/shaders/wgsl/${FILENAME}.bin) + _bgfx_shaderc_parse(WGSL ${COMMON} LINUX PROFILE wgsl OUTPUT ${WGSL_OUTPUT}) + list(APPEND OUTPUTS "WGSL") + set(OUTPUTS_PRETTY "${OUTPUTS_PRETTY}WGSL") + foreach(OUT ${OUTPUTS}) list(APPEND OUTPUT_FILES ${${OUT}_OUTPUT}) list(APPEND COMMANDS COMMAND "bgfx::shaderc" ${${OUT}}) diff --git a/cmake/bgfx/shaderc.cmake b/cmake/bgfx/shaderc.cmake index 0f50eab..fdd67db 100644 --- a/cmake/bgfx/shaderc.cmake +++ b/cmake/bgfx/shaderc.cmake @@ -19,16 +19,6 @@ file( add_executable(shaderc ${SHADERC_SOURCES}) -target_link_libraries( - shaderc - PRIVATE bx - bgfx-vertexlayout - fcpp - glslang - glsl-optimizer - spirv-opt - spirv-cross -) target_link_libraries( shaderc PRIVATE bx @@ -40,6 +30,13 @@ target_link_libraries( spirv-opt spirv-cross webgpu + tint +) + +target_include_directories( + shaderc + PRIVATE ${BGFX_DIR}/3rdparty/dawn + ${BGFX_DIR}/3rdparty/dawn/src ) if(BGFX_AMALGAMATED) target_link_libraries(shaderc PRIVATE bgfx-shader)