Fix more bit rotting in webgpu_player Diffs= b03d365c93 Fix more bit rotting in webgpu_player (#8906) Co-authored-by: Chris Dalton <99840794+csmartdalton@users.noreply.github.com>
diff --git a/.rive_head b/.rive_head index ae0cbac..fb10e0b 100644 --- a/.rive_head +++ b/.rive_head
@@ -1 +1 @@ -77a886e2855287d72c853d3da89a09db3f139e42 +b03d365c93d0d52f0f05ae598deacbf7dd330a53
diff --git a/renderer/premake5.lua b/renderer/premake5.lua index bded3c2..cc27fc8 100644 --- a/renderer/premake5.lua +++ b/renderer/premake5.lua
@@ -9,161 +9,163 @@ dofile(RIVE_RUNTIME_DIR .. '/skia/renderer/build/premake5.lua') end -project('path_fiddle') -do - dependson('rive') - kind('ConsoleApp') - includedirs({ - 'include', - RIVE_RUNTIME_DIR .. '/include', - 'include', - RIVE_RUNTIME_DIR .. '/renderer/src', - }) - externalincludedirs({ - 'glad', - RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw/include', - yoga, - }) - - flags({ 'FatalCompileWarnings' }) - - defines({ 'YOGA_EXPORT=' }) - - files({ 'path_fiddle/**.cpp' }) - - links({ - 'rive', - 'rive_pls_renderer', - 'rive_decoders', - 'libwebp', - 'rive_harfbuzz', - 'rive_sheenbidi', - 'rive_yoga', - }) - filter({ 'options:not no_rive_png' }) +if not _OPTIONS['with-webgpu'] then + project('path_fiddle') do - links({ 'zlib', 'libpng' }) - end - filter({ 'options:not no_rive_jpeg' }) - do - links({ 'libjpeg' }) - end - filter({}) - - if _OPTIONS['with_vulkan'] then - dofile('rive_vk_bootstrap/bootstrap_project.lua') - end - - filter('action:xcode4') - do - -- xcode doesnt like angle brackets except for -isystem - -- should use externalincludedirs but GitHub runners dont have latest premake5 binaries - buildoptions({ '-isystem' .. yoga }) - end - - filter({ 'toolset:not msc' }) - do - buildoptions({ '-Wshorten-64-to-32' }) - end - - filter('options:with-skia') - do + dependson('rive') + kind('ConsoleApp') includedirs({ - RIVE_RUNTIME_DIR .. '/skia/renderer/include', - RIVE_RUNTIME_DIR .. '/skia/dependencies', - RIVE_RUNTIME_DIR .. '/skia/dependencies/skia', + 'include', + RIVE_RUNTIME_DIR .. '/include', + 'include', + RIVE_RUNTIME_DIR .. '/renderer/src', }) - defines({ 'RIVE_SKIA', 'SK_GL' }) - libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/skia/out/static' }) - links({ 'skia', 'rive_skia_renderer' }) - end - - filter('system:windows') - do - architecture('x64') - defines({ 'RIVE_WINDOWS', '_CRT_SECURE_NO_WARNINGS' }) - libdirs({ - RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src/Release', + externalincludedirs({ + 'glad', + RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw/include', + yoga, }) - links({ 'glfw3', 'opengl32', 'd3d11', 'dxgi', 'd3dcompiler' }) - end - filter('system:macosx') - do - files({ 'path_fiddle/**.mm' }) - buildoptions({ '-fobjc-arc' }) - links({ - 'glfw3', - 'Cocoa.framework', - 'Metal.framework', - 'QuartzCore.framework', - 'IOKit.framework', - }) - libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src' }) - end + flags({ 'FatalCompileWarnings' }) - filter('system:linux') - do - links({ 'glfw3' }) - libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src' }) - end - - filter('options:with-dawn') - do - includedirs({ - 'dependencies/dawn/include', - 'dependencies/dawn/out/release/gen/include', - }) - libdirs({ - 'dependencies/dawn/out/release/obj/src/dawn', - 'dependencies/dawn/out/release/obj/src/dawn/native', - 'dependencies/dawn/out/release/obj/src/dawn/platform', - 'dependencies/dawn/out/release/obj/src/dawn/platform', - }) - links({ - 'dawn_native_static', - 'webgpu_dawn', - 'dawn_platform_static', - 'dawn_proc_static', - }) - end - - filter({ 'options:with-dawn', 'system:windows' }) - do - links({ 'dxguid' }) - end - - filter({ 'options:with-dawn', 'system:macosx' }) - do - links({ 'IOSurface.framework' }) - end - - filter('system:emscripten') - do - targetname('path_fiddle.js') - linkoptions({ - '-sUSE_GLFW=3', - '-sMIN_WEBGL_VERSION=2', - '-sMAX_WEBGL_VERSION=2', - '--preload-file ' .. path.getabsolute('../../../gold') .. '/rivs@/', - }) - files({ 'path_fiddle/index.html' }) - end - - filter({ 'options:with_rive_layout' }) - do defines({ 'YOGA_EXPORT=' }) - includedirs({ yoga }) + + files({ 'path_fiddle/**.cpp' }) + links({ + 'rive', + 'rive_pls_renderer', + 'rive_decoders', + 'libwebp', + 'rive_harfbuzz', + 'rive_sheenbidi', 'rive_yoga', }) - end + filter({ 'options:not no_rive_png' }) + do + links({ 'zlib', 'libpng' }) + end + filter({ 'options:not no_rive_jpeg' }) + do + links({ 'libjpeg' }) + end + filter({}) - filter('files:**.html') - do - buildmessage('Copying %{file.relpath} to %{cfg.targetdir}') - buildcommands({ 'cp %{file.relpath} %{cfg.targetdir}/%{file.name}' }) - buildoutputs({ '%{cfg.targetdir}/%{file.name}' }) + if _OPTIONS['with_vulkan'] then + dofile('rive_vk_bootstrap/bootstrap_project.lua') + end + + filter('action:xcode4') + do + -- xcode doesnt like angle brackets except for -isystem + -- should use externalincludedirs but GitHub runners dont have latest premake5 binaries + buildoptions({ '-isystem' .. yoga }) + end + + filter({ 'toolset:not msc' }) + do + buildoptions({ '-Wshorten-64-to-32' }) + end + + filter('options:with-skia') + do + includedirs({ + RIVE_RUNTIME_DIR .. '/skia/renderer/include', + RIVE_RUNTIME_DIR .. '/skia/dependencies', + RIVE_RUNTIME_DIR .. '/skia/dependencies/skia', + }) + defines({ 'RIVE_SKIA', 'SK_GL' }) + libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/skia/out/static' }) + links({ 'skia', 'rive_skia_renderer' }) + end + + filter('system:windows') + do + architecture('x64') + defines({ 'RIVE_WINDOWS', '_CRT_SECURE_NO_WARNINGS' }) + libdirs({ + RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src/Release', + }) + links({ 'glfw3', 'opengl32', 'd3d11', 'dxgi', 'd3dcompiler' }) + end + + filter('system:macosx') + do + files({ 'path_fiddle/**.mm' }) + buildoptions({ '-fobjc-arc' }) + links({ + 'glfw3', + 'Cocoa.framework', + 'Metal.framework', + 'QuartzCore.framework', + 'IOKit.framework', + }) + libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src' }) + end + + filter('system:linux') + do + links({ 'glfw3' }) + libdirs({ RIVE_RUNTIME_DIR .. '/skia/dependencies/glfw_build/src' }) + end + + filter('options:with-dawn') + do + includedirs({ + 'dependencies/dawn/include', + 'dependencies/dawn/out/release/gen/include', + }) + libdirs({ + 'dependencies/dawn/out/release/obj/src/dawn', + 'dependencies/dawn/out/release/obj/src/dawn/native', + 'dependencies/dawn/out/release/obj/src/dawn/platform', + 'dependencies/dawn/out/release/obj/src/dawn/platform', + }) + links({ + 'dawn_native_static', + 'webgpu_dawn', + 'dawn_platform_static', + 'dawn_proc_static', + }) + end + + filter({ 'options:with-dawn', 'system:windows' }) + do + links({ 'dxguid' }) + end + + filter({ 'options:with-dawn', 'system:macosx' }) + do + links({ 'IOSurface.framework' }) + end + + filter('system:emscripten') + do + targetname('path_fiddle.js') + linkoptions({ + '-sUSE_GLFW=3', + '-sMIN_WEBGL_VERSION=2', + '-sMAX_WEBGL_VERSION=2', + '--preload-file ' .. path.getabsolute('../../../gold') .. '/rivs@/', + }) + files({ 'path_fiddle/index.html' }) + end + + filter({ 'options:with_rive_layout' }) + do + defines({ 'YOGA_EXPORT=' }) + includedirs({ yoga }) + links({ + 'rive_yoga', + }) + end + + filter('files:**.html') + do + buildmessage('Copying %{file.relpath} to %{cfg.targetdir}') + buildcommands({ 'cp %{file.relpath} %{cfg.targetdir}/%{file.name}' }) + buildoutputs({ '%{cfg.targetdir}/%{file.name}' }) + end end end @@ -187,30 +189,30 @@ 'webgpu_player/index.html', 'webgpu_player/icons.html', 'webgpu_player/rive.js', - '../../../gold/rivs/Santa_Claus.riv', - '../../../gold/rivs/Coffee_Cup.riv', - '../../../gold/rivs/skull_404.riv', - '../../../gold/rivs/octopus_loop.riv', - '../../../gold/rivs/planets.riv', - '../../../gold/rivs/Timer.riv', - '../../../gold/rivs/adventuretime_marceline-pb.riv', - '../../../gold/rivs/towersDemo.riv', - '../../../gold/rivs/skills_demov1.riv', - '../../../gold/rivs/car_demo.riv', - '../../../gold/rivs/cloud_icon.riv', - '../../../gold/rivs/coffee_loader.riv', - '../../../gold/rivs/documentation.riv', - '../../../gold/rivs/fire_button.riv', - '../../../gold/rivs/lumberjackfinal.riv', - '../../../gold/rivs/mail_box.riv', - '../../../gold/rivs/new_file.riv', - '../../../gold/rivs/poison_loader.riv', - '../../../gold/rivs/popsicle_loader.riv', - '../../../gold/rivs/radio_button_example.riv', - '../../../gold/rivs/avatar_demo.riv', - '../../../gold/rivs/stopwatch.riv', - '../../../gold/rivs/volume_bars.riv', - '../../../gold/rivs/travel_icons.riv', + 'webgpu_player/rivs/Santa_Claus.riv', + 'webgpu_player/rivs/Coffee_Cup.riv', + 'webgpu_player/rivs/skull_404.riv', + 'webgpu_player/rivs/octopus_loop.riv', + 'webgpu_player/rivs/planets.riv', + 'webgpu_player/rivs/Timer.riv', + 'webgpu_player/rivs/adventuretime_marceline-pb.riv', + 'webgpu_player/rivs/towersDemo.riv', + 'webgpu_player/rivs/skills_demov1.riv', + 'webgpu_player/rivs/car_demo.riv', + 'webgpu_player/rivs/cloud_icon.riv', + 'webgpu_player/rivs/coffee_loader.riv', + 'webgpu_player/rivs/documentation.riv', + 'webgpu_player/rivs/fire_button.riv', + 'webgpu_player/rivs/lumberjackfinal.riv', + 'webgpu_player/rivs/mail_box.riv', + 'webgpu_player/rivs/new_file.riv', + 'webgpu_player/rivs/poison_loader.riv', + 'webgpu_player/rivs/popsicle_loader.riv', + 'webgpu_player/rivs/radio_button_example.riv', + 'webgpu_player/rivs/avatar_demo.riv', + 'webgpu_player/rivs/stopwatch.riv', + 'webgpu_player/rivs/volume_bars.riv', + 'webgpu_player/rivs/travel_icons.riv', }) links({
diff --git a/renderer/src/webgpu/render_context_webgpu_impl.cpp b/renderer/src/webgpu/render_context_webgpu_impl.cpp index 8030b22..e581d70 100644 --- a/renderer/src/webgpu/render_context_webgpu_impl.cpp +++ b/renderer/src/webgpu/render_context_webgpu_impl.cpp
@@ -366,10 +366,7 @@ { return m_bindGroupLayout; } - const wgpu::RenderPipeline& renderPipeline() const - { - return m_renderPipeline; - } + wgpu::RenderPipeline renderPipeline() const { return m_renderPipeline; } private: wgpu::BindGroupLayout m_bindGroupLayout; @@ -551,10 +548,7 @@ { return m_bindGroupLayout; } - const wgpu::RenderPipeline renderPipeline() const - { - return m_renderPipeline; - } + wgpu::RenderPipeline renderPipeline() const { return m_renderPipeline; } private: wgpu::BindGroupLayout m_bindGroupLayout; @@ -793,7 +787,7 @@ } } - const wgpu::RenderPipeline renderPipeline( + wgpu::RenderPipeline renderPipeline( wgpu::TextureFormat framebufferFormat) const { return m_renderPipelines[RenderPipelineIdx(framebufferFormat)];
diff --git a/renderer/src/webgpu/render_context_webgpu_vulkan.cpp b/renderer/src/webgpu/render_context_webgpu_vulkan.cpp index 5eea4cc..ea4749e 100644 --- a/renderer/src/webgpu/render_context_webgpu_vulkan.cpp +++ b/renderer/src/webgpu/render_context_webgpu_vulkan.cpp
@@ -192,14 +192,14 @@ inputs : [ {format : framebufferFormat, usedAsColor : true}, {format : "r32uint", usedAsColor : true}, - {format : "r32uint", usedAsColor : true}, {format : framebufferFormat, usedAsColor : true}, + {format : "r32uint", usedAsColor : true}, ], targets : [ {format : framebufferFormat, usedAsInput : true}, {format : "r32uint", usedAsInput : true}, - {format : "r32uint", usedAsInput : true}, {format : framebufferFormat, usedAsInput : true}, + {format : "r32uint", usedAsInput : true}, ], features : GPUFragmentStateFeatures .RASTERIZATION_ORDER_ATTACHMENT_ACCESS, @@ -231,6 +231,10 @@ emscripten_webgpu_export_shader_module(fragmentShader.Get()), emscripten_webgpu_export_pipeline_layout(drawPipelineLayout().Get()), frontFaceForOnScreenDraws() == wgpu::FrontFace::CW)); + static_assert(COLOR_PLANE_IDX == 0); + static_assert(CLIP_PLANE_IDX == 1); + static_assert(SCRATCH_COLOR_PLANE_IDX == 2); + static_assert(COVERAGE_PLANE_IDX == 3); return wgpu::RenderPipeline::Acquire( emscripten_webgpu_import_render_pipeline( pipelineJSHandleIfNeeded->get()));
diff --git a/renderer/webgpu_player/index.html b/renderer/webgpu_player/index.html index 5da8424..29cddbe 100644 --- a/renderer/webgpu_player/index.html +++ b/renderer/webgpu_player/index.html
@@ -37,7 +37,13 @@ // Rive has to be initialized before loading assets. const invertY = false - RiveInitialize(data.device, data.queue, data.width, data.height, invertY, RIVE_PLS_TYPE_NONE); + RiveInitialize(data.device, + data.queue, + data.width, + data.height, + invertY, + RIVE_PLS_TYPE_NONE, + 4); assets.skills = await loadRiveAsset({url:"skills_demov1.riv", stateMachine:"Motion"}); assets.santa = await loadRiveAsset({url:"Santa_Claus.riv"});
diff --git a/renderer/webgpu_player/rive.js b/renderer/webgpu_player/rive.js index 9029c8e..fd9bd00 100644 --- a/renderer/webgpu_player/rive.js +++ b/renderer/webgpu_player/rive.js
@@ -23,14 +23,21 @@ const RIVE_ALIGNMENT_BOTTOM_CENTER = [0.0, 1.0]; const RIVE_ALIGNMENT_BOTTOM_RIGHT = [1.0, 1.0]; -function RiveInitialize(device, queue, canvasWidth, canvasHeight, invertedY, pixelLocalStorageType) +function RiveInitialize(device, + queue, + canvasWidth, + canvasHeight, + invertedY, + pixelLocalStorageType, + maxVertexStorageBlocks) { Module._RiveInitialize(JsValStore.add(device), JsValStore.add(queue), canvasWidth, canvasHeight, invertedY, - pixelLocalStorageType); + pixelLocalStorageType, + maxVertexStorageBlocks); } function RiveLoadFile(bytes)
diff --git a/renderer/webgpu_player/rivs/Coffee_Cup.riv b/renderer/webgpu_player/rivs/Coffee_Cup.riv new file mode 100644 index 0000000..c94664b --- /dev/null +++ b/renderer/webgpu_player/rivs/Coffee_Cup.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/Santa_Claus.riv b/renderer/webgpu_player/rivs/Santa_Claus.riv new file mode 100644 index 0000000..e2fad60 --- /dev/null +++ b/renderer/webgpu_player/rivs/Santa_Claus.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/Timer.riv b/renderer/webgpu_player/rivs/Timer.riv new file mode 100644 index 0000000..245c55d --- /dev/null +++ b/renderer/webgpu_player/rivs/Timer.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/adventuretime_marceline-pb.riv b/renderer/webgpu_player/rivs/adventuretime_marceline-pb.riv new file mode 100644 index 0000000..3db0769 --- /dev/null +++ b/renderer/webgpu_player/rivs/adventuretime_marceline-pb.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/avatar_demo.riv b/renderer/webgpu_player/rivs/avatar_demo.riv new file mode 100644 index 0000000..afea38b --- /dev/null +++ b/renderer/webgpu_player/rivs/avatar_demo.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/car_demo.riv b/renderer/webgpu_player/rivs/car_demo.riv new file mode 100644 index 0000000..dacdf4a --- /dev/null +++ b/renderer/webgpu_player/rivs/car_demo.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/cloud_icon.riv b/renderer/webgpu_player/rivs/cloud_icon.riv new file mode 100644 index 0000000..a3c3cf3 --- /dev/null +++ b/renderer/webgpu_player/rivs/cloud_icon.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/coffee_loader.riv b/renderer/webgpu_player/rivs/coffee_loader.riv new file mode 100644 index 0000000..dc62bf2 --- /dev/null +++ b/renderer/webgpu_player/rivs/coffee_loader.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/documentation.riv b/renderer/webgpu_player/rivs/documentation.riv new file mode 100644 index 0000000..e324421 --- /dev/null +++ b/renderer/webgpu_player/rivs/documentation.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/fire_button.riv b/renderer/webgpu_player/rivs/fire_button.riv new file mode 100644 index 0000000..688991e --- /dev/null +++ b/renderer/webgpu_player/rivs/fire_button.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/lumberjackfinal.riv b/renderer/webgpu_player/rivs/lumberjackfinal.riv new file mode 100644 index 0000000..21559c0 --- /dev/null +++ b/renderer/webgpu_player/rivs/lumberjackfinal.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/mail_box.riv b/renderer/webgpu_player/rivs/mail_box.riv new file mode 100644 index 0000000..4626b47 --- /dev/null +++ b/renderer/webgpu_player/rivs/mail_box.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/new_file.riv b/renderer/webgpu_player/rivs/new_file.riv new file mode 100644 index 0000000..d5c57a9 --- /dev/null +++ b/renderer/webgpu_player/rivs/new_file.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/octopus_loop.riv b/renderer/webgpu_player/rivs/octopus_loop.riv new file mode 100644 index 0000000..e0bf769 --- /dev/null +++ b/renderer/webgpu_player/rivs/octopus_loop.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/planets.riv b/renderer/webgpu_player/rivs/planets.riv new file mode 100644 index 0000000..4c2159f --- /dev/null +++ b/renderer/webgpu_player/rivs/planets.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/poison_loader.riv b/renderer/webgpu_player/rivs/poison_loader.riv new file mode 100644 index 0000000..852c6ec --- /dev/null +++ b/renderer/webgpu_player/rivs/poison_loader.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/popsicle_loader.riv b/renderer/webgpu_player/rivs/popsicle_loader.riv new file mode 100644 index 0000000..2d7ba67 --- /dev/null +++ b/renderer/webgpu_player/rivs/popsicle_loader.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/radio_button_example.riv b/renderer/webgpu_player/rivs/radio_button_example.riv new file mode 100644 index 0000000..3cdb44b --- /dev/null +++ b/renderer/webgpu_player/rivs/radio_button_example.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/skills_demov1.riv b/renderer/webgpu_player/rivs/skills_demov1.riv new file mode 100644 index 0000000..08a8a2b --- /dev/null +++ b/renderer/webgpu_player/rivs/skills_demov1.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/skull_404.riv b/renderer/webgpu_player/rivs/skull_404.riv new file mode 100644 index 0000000..2b72524 --- /dev/null +++ b/renderer/webgpu_player/rivs/skull_404.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/stopwatch.riv b/renderer/webgpu_player/rivs/stopwatch.riv new file mode 100644 index 0000000..b81dd16 --- /dev/null +++ b/renderer/webgpu_player/rivs/stopwatch.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/towersDemo.riv b/renderer/webgpu_player/rivs/towersDemo.riv new file mode 100644 index 0000000..5720aa8 --- /dev/null +++ b/renderer/webgpu_player/rivs/towersDemo.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/travel_icons.riv b/renderer/webgpu_player/rivs/travel_icons.riv new file mode 100644 index 0000000..67b26b9 --- /dev/null +++ b/renderer/webgpu_player/rivs/travel_icons.riv Binary files differ
diff --git a/renderer/webgpu_player/rivs/volume_bars.riv b/renderer/webgpu_player/rivs/volume_bars.riv new file mode 100644 index 0000000..1307426 --- /dev/null +++ b/renderer/webgpu_player/rivs/volume_bars.riv Binary files differ
diff --git a/renderer/webgpu_player/webgpu_player.cpp b/renderer/webgpu_player/webgpu_player.cpp index 9fa3a43..2b63253 100644 --- a/renderer/webgpu_player/webgpu_player.cpp +++ b/renderer/webgpu_player/webgpu_player.cpp
@@ -75,7 +75,7 @@ int canvasHeight, bool invertedY, int pixelLocalStorageType, - int maxVertexStorgeBlocks) + int maxVertexStorageBlocks) { s_deviceHandle = EmJsHandle(deviceID); s_queueHandle = EmJsHandle(queueID); @@ -92,7 +92,7 @@ emscripten_webgpu_import_queue(s_queueHandle.get()), platformFeatures, static_cast<PixelLocalStorageType>(pixelLocalStorageType), - maxVertexStorgeBlocks); + maxVertexStorageBlocks); } intptr_t EMSCRIPTEN_KEEPALIVE RiveBeginRendering(int textureViewID, @@ -431,9 +431,9 @@ #endif +#ifdef RIVE_DAWN int main(int argc, const char** argv) { -#ifdef RIVE_DAWN // Cause stdout and stderr to print immediately without buffering. setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stderr, NULL, _IONBF, 0); @@ -606,6 +606,6 @@ lastTimestamp = timestamp; } glfwTerminate(); -#endif return 0; } +#endif