Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
34e375a
refactor: rename ImageRenderer::reportGL to debugGpu and report a GPU…
cedrik-fuoco-adsk Aug 31, 2026
1a7b815
build: fetch the Vulkan headers and loader on Linux and Windows
cedrik-fuoco-adsk Aug 31, 2026
495d089
feat(vulkan): add QTVulkanVideoDevice, a GL-to-Vulkan presentation br…
cedrik-fuoco-adsk Aug 31, 2026
774ceeb
feat(vulkan): add the VulkanWindow/VulkanView 10-bit viewport
cedrik-fuoco-adsk Aug 31, 2026
bacca31
feat: present through Vulkan for 10-bit output on Linux and Windows
cedrik-fuoco-adsk Aug 31, 2026
11dbba1
fix: make RV.ini writes survive AccessError on Windows
cedrik-fuoco-adsk Aug 31, 2026
64eb98a
Merge branch 'AcademySoftwareFoundation:main' into vulkna-10bit-windows
cedrik-fuoco-adsk Sep 10, 2026
2dc4da9
fix(vulkan): release Vulkan resources before the platform window is d…
bernie-laberge Sep 10, 2026
a19d3a8
fix(vulkan): harden Windows GL interop and 10-bit swapchain colour-sp…
cedrik-fuoco-adsk Sep 15, 2026
46c573c
Temp commit while the main has it
cedrik-fuoco-adsk Sep 15, 2026
ca8667e
Merge branch 'main' into vulkna-10bit-windows
cedrik-fuoco-adsk Sep 16, 2026
950ba25
feat(vulkan): share one process-lifetime VkInstance between the 10-bi…
cedrik-fuoco-adsk Sep 10, 2026
80b82d3
fix(vulkan): present the main viewport when a separate output is active
cedrik-fuoco-adsk Sep 10, 2026
8906ca9
feat(vulkan): add VulkanDesktopVideoDevice, the 10-bit second-display…
cedrik-fuoco-adsk Sep 10, 2026
62f3509
fix(vulkan): advertise RGB10 on a Vulkan presentation device
cedrik-fuoco-adsk Sep 10, 2026
d5cd4ed
feat: rebuild the desktop presentation devices when the main-view bac…
cedrik-fuoco-adsk Sep 10, 2026
3cbc864
feat: live-swap the main view between OpenGL and Vulkan on an 8/10-bi…
cedrik-fuoco-adsk Sep 10, 2026
2e2f3a8
fix(vulkan): do not deliver destroyed() into a half-destructed Vulkan…
cedrik-fuoco-adsk Sep 10, 2026
5f333e1
fix(vulkan): stop stealing the GL context from the presentation output
cedrik-fuoco-adsk Sep 10, 2026
c74a0f0
fix(vulkan): keep the presentation output inert for input
cedrik-fuoco-adsk Sep 11, 2026
2dc1066
chore(vulkan): report frame timing and interactive latency under -deb…
cedrik-fuoco-adsk Sep 11, 2026
ead3df9
perf(vulkan): present the control viewport one frame deep
cedrik-fuoco-adsk Sep 11, 2026
cc7f89b
perf(vulkan): match the presentation output's FBO to its swapchain fo…
cedrik-fuoco-adsk Sep 11, 2026
830c3a9
perf(vulkan): skip an output present while its GPU work is in flight
cedrik-fuoco-adsk Sep 11, 2026
20fdc6a
fix(color): keep the display colour pipeline across a main-view backe…
cedrik-fuoco-adsk Sep 11, 2026
fb5b92e
fix(vulkan): require matching GL/Vulkan device UUIDs before GPU interop
cedrik-fuoco-adsk Sep 11, 2026
393333e
fix(gl): distinguish a missing GL context from a failed GL call
cedrik-fuoco-adsk Sep 19, 2026
6198d01
feat(gl): add GLContextScope, guaranteeing a context for GL teardown
cedrik-fuoco-adsk Sep 19, 2026
a3418d8
fix(gl): destroy renderer FBOs with a GL context current
cedrik-fuoco-adsk Sep 19, 2026
71b20fb
fix(gl): release pooled PBOs while a context still exists
cedrik-fuoco-adsk Sep 19, 2026
aab1aae
fix(rv): restore cout/cerr when the console window is destroyed
cedrik-fuoco-adsk Sep 19, 2026
c71dedd
fix(rv): stop auxiliary windows from blocking application exit
cedrik-fuoco-adsk Sep 19, 2026
529a2a7
fix(audio): do not block shutdown on a thread with no event loop
cedrik-fuoco-adsk Sep 19, 2026
d6ccc8d
fix(container): return null from an empty property's data()
cedrik-fuoco-adsk Sep 21, 2026
3a6306d
fix(rv): clear the global settings pointer after deleting it
cedrik-fuoco-adsk Sep 21, 2026
09cd302
fix(audio): release the audio output objects when creation fails
cedrik-fuoco-adsk Sep 21, 2026
fcb4e1e
fix(rv): make the display colour-profile query safe on Windows
cedrik-fuoco-adsk Sep 21, 2026
3c14bb4
fix(rv): present the second display through a shared-context QOpenGLW…
cedrik-fuoco-adsk Sep 21, 2026
d7f34eb
fix(gl): verify presentation FBO clones before blitting from them
cedrik-fuoco-adsk Sep 21, 2026
6b0736f
fix(gl): keep a context current through GL teardown
cedrik-fuoco-adsk Sep 21, 2026
6d44c22
fix(rv): rebuild presentation devices onto the live main-view backend
cedrik-fuoco-adsk Sep 21, 2026
2b399f0
fix(rv): persist the display depth when switching back to 8-bit
cedrik-fuoco-adsk Sep 21, 2026
780d187
fix(vulkan): correct presentation sizing on a second display
cedrik-fuoco-adsk Sep 21, 2026
8145940
fix(vulkan): port the Vulkan presentation interop negotiation
cedrik-fuoco-adsk Sep 22, 2026
762e38f
feat(macos): add 10-bit Metal display backend
cedrik-fuoco-adsk Sep 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions cmake/defaults/CYCOMMON.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,21 @@ SET(RV_DEPS_GLEW_VERSION_LIB
"2.3.1"
)

# vulkan https://github.com/KhronosGroup/Vulkan-Headers + https://github.com/KhronosGroup/Vulkan-Loader
SET(RV_DEPS_VULKAN_VERSION
"1.4.350.0"
)
SET(RV_DEPS_VULKAN_HEADERS_DOWNLOAD_HASH
"74d68465ca2ef442397dc159edaa3b9c"
)
SET(RV_DEPS_VULKAN_LOADER_DOWNLOAD_HASH
"6ec91c673b48bbdffc923cce9d6a1a85"
)
# libvulkan.so SONAME major (libvulkan.so.1)
SET(RV_DEPS_VULKAN_VERSION_LIB
"1"
)

# imgui https://github.com/pthom/imgui
#
# Note this also depends on the following repositories: https://github.com/pthom/implot.git https://github.com/dpaulat/imgui-backend-qt.git
Expand Down
12 changes: 12 additions & 0 deletions cmake/dependencies/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,13 @@ IF(RV_TARGET_DARWIN
INCLUDE(gc)
INCLUDE(glew)
ENDIF()
# Vulkan (headers + loader) is fetched on Linux and Windows for the 10-bit presentation backend. On Linux the loader is libvulkan.so; on Windows it is
# vulkan-1.dll plus its import library.
IF(RV_TARGET_LINUX
OR RV_TARGET_WINDOWS
)
INCLUDE(vulkan)
ENDIF()
INCLUDE(imath)
INCLUDE(zlib)
INCLUDE(ffmpeg)
Expand Down Expand Up @@ -167,6 +174,11 @@ IF(RV_TARGET_DARWIN
MESSAGE(STATUS "Using GC: ${RV_DEPS_GC_VERSION}")
MESSAGE(STATUS "Using GLEW: ${RV_DEPS_GLEW_VERSION}")
ENDIF()
IF(RV_TARGET_LINUX
OR RV_TARGET_WINDOWS
)
MESSAGE(STATUS "Using Vulkan: ${RV_DEPS_VULKAN_VERSION}")
ENDIF()
MESSAGE(STATUS "Using Imath: ${RV_DEPS_IMATH_VERSION}")
MESSAGE(STATUS "Using JpegTurbo: ${RV_DEPS_JPEGTURBO_VERSION}")
MESSAGE(STATUS "Using OpenEXR: ${RV_DEPS_OPENEXR_VERSION}")
Expand Down
144 changes: 144 additions & 0 deletions cmake/dependencies/build/vulkan.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
#
# Copyright (C) 2026 Autodesk, Inc. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
# Build Vulkan-Headers (header-only install) + Vulkan-Loader (libvulkan.so / vulkan-1.dll) from hash-pinned Khronos GitHub tarballs. Both install into the
# shared ${_install_dir}. Included by cmake/dependencies/vulkan.cmake when no system Vulkan package is found.
#
# Expects these variables from the caller (set by RV_CREATE_STANDARD_DEPS_VARIABLES): _target, _version, _install_dir, _include_dir, _lib_dir, _bin_dir. And
# these dep-specific variables: _vulkan_lib, _vulkan_lib_name (and on Windows, _vulkan_implib, _vulkan_implib_name).
#
# The loader ships pre-generated sources and gates its Python codegen behind LOADER_CODEGEN (default OFF), so no Python is required at build time. It does
# require the Vulkan-Headers CMake package (find_package(VulkanHeaders CONFIG)), provided via CMAKE_PREFIX_PATH below.

SET(_headers_url
"https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/vulkan-sdk-${_version}.tar.gz"
)
SET(_loader_url
"https://github.com/KhronosGroup/Vulkan-Loader/archive/refs/tags/vulkan-sdk-${_version}.tar.gz"
)

# --- Vulkan-Headers: installs headers + the VulkanHeaders CMake config + the registry. ---
EXTERNALPROJECT_ADD(
${_target}_headers
URL ${_headers_url}
URL_MD5 ${RV_DEPS_VULKAN_HEADERS_DOWNLOAD_HASH}
DOWNLOAD_NAME vulkan-headers-${_version}.tar.gz
DOWNLOAD_DIR ${RV_DEPS_DOWNLOAD_DIR}
SOURCE_DIR ${RV_DEPS_BASE_DIR}/${_target}/headers-src
BINARY_DIR ${RV_DEPS_BASE_DIR}/${_target}/headers-build
INSTALL_DIR ${_install_dir}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${_install_dir} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DVULKAN_HEADERS_ENABLE_MODULE=OFF -DVULKAN_HEADERS_ENABLE_TESTS=OFF
BUILD_ALWAYS FALSE
USES_TERMINAL_BUILD TRUE
)

# --- Vulkan-Loader: builds libvulkan.so / vulkan-1.dll against the installed headers. ---
# Linux WSI: enable Xlib/XCB (RV is an X11 client); leave Wayland off to avoid a wayland-client build dependency. Windows WSI: Vulkan-Loader defaults to WIN32
# WSI on WIN32 -- no explicit flags needed.
IF(RV_TARGET_WINDOWS)
SET(_vulkan_wsi_args
""
)
ELSE()
SET(_vulkan_wsi_args
-DBUILD_WSI_XLIB_SUPPORT=ON -DBUILD_WSI_XCB_SUPPORT=ON -DBUILD_WSI_WAYLAND_SUPPORT=OFF -DBUILD_WSI_XLIB_XRANDR_SUPPORT=OFF
)
ENDIF()

# Windows also emits the .lib import library; declare it as a byproduct so downstream link steps that depend on ${_vulkan_implib} don't race the build.
SET(_vulkan_byproducts
${_vulkan_lib}
)
IF(RV_TARGET_WINDOWS)
LIST(APPEND _vulkan_byproducts ${_vulkan_implib})
ENDIF()

EXTERNALPROJECT_ADD(
${_target}
DEPENDS ${_target}_headers
URL ${_loader_url}
URL_MD5 ${RV_DEPS_VULKAN_LOADER_DOWNLOAD_HASH}
DOWNLOAD_NAME vulkan-loader-${_version}.tar.gz
DOWNLOAD_DIR ${RV_DEPS_DOWNLOAD_DIR}
SOURCE_DIR ${RV_DEPS_BASE_DIR}/${_target}/loader-src
BINARY_DIR ${RV_DEPS_BASE_DIR}/${_target}/loader-build
INSTALL_DIR ${_install_dir}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${_install_dir}
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_INSTALL_LIBDIR=lib
-DCMAKE_PREFIX_PATH=${_install_dir}
-DVULKAN_HEADERS_INSTALL_DIR=${_install_dir}
-DBUILD_TESTS=OFF
${_vulkan_wsi_args}
BUILD_BYPRODUCTS ${_vulkan_byproducts}
BUILD_ALWAYS FALSE
USES_TERMINAL_BUILD TRUE
)

IF(TARGET Vulkan::Vulkan)
# Qt's find_package(Qt6 Gui) -> WrapVulkanHeaders ran find_package(Vulkan) before us and created a global Vulkan::Vulkan pointing at the system loader. We
# can't redefine it (ADD_LIBRARY would error), so repoint it at our fetched build instead. This is invisible to Qt: it consumes only the Vulkan headers (via
# WrapVulkanHeaders) and dlopen()s the loader at runtime -- it never links Vulkan::Vulkan's IMPORTED_LOCATION.
MESSAGE(STATUS "Repointing existing Vulkan::Vulkan target at managed Vulkan ${_version}")
ADD_DEPENDENCIES(Vulkan::Vulkan ${_target})
FILE(MAKE_DIRECTORY ${_include_dir})
# On Windows, the target Qt creates via CMake's built-in FindVulkan is UNKNOWN IMPORTED. For that type the linker is fed IMPORTED_LOCATION directly and
# IMPORTED_IMPLIB is ignored -- so IMPORTED_LOCATION must be the .lib import library, not the .dll (otherwise LNK1107 "invalid or corrupt file"). We can't
# change a target's type after it's created, so detect the type and set properties accordingly.
GET_TARGET_PROPERTY(_vulkan_target_type Vulkan::Vulkan TYPE)
IF(RV_TARGET_WINDOWS
AND _vulkan_target_type STREQUAL "UNKNOWN_LIBRARY"
)
SET_TARGET_PROPERTIES(
Vulkan::Vulkan
PROPERTIES IMPORTED_LOCATION ${_vulkan_implib}
INTERFACE_INCLUDE_DIRECTORIES ${_include_dir}
)
ELSE()
SET_TARGET_PROPERTIES(
Vulkan::Vulkan
PROPERTIES IMPORTED_LOCATION ${_vulkan_lib}
IMPORTED_SONAME ${_vulkan_lib_name}
INTERFACE_INCLUDE_DIRECTORIES ${_include_dir}
)
IF(RV_TARGET_WINDOWS)
SET_PROPERTY(
TARGET Vulkan::Vulkan
PROPERTY IMPORTED_IMPLIB ${_vulkan_implib}
)
ENDIF()
ENDIF()
# Qt's find_package(Qt6 Gui) -> WrapVulkanHeaders created WrapVulkanHeaders::WrapVulkanHeaders pointing at the system Vulkan SDK include dir, and Qt6::Gui
# links it publicly. Overwrite its include dir with our managed headers so every consumer of Qt::Gui compiles against the managed Vulkan, not the system SDK.
# SET (not target_include_directories) to replace, not append, the system path.
IF(TARGET WrapVulkanHeaders::WrapVulkanHeaders)
MESSAGE(STATUS "Repointing WrapVulkanHeaders at managed Vulkan ${_version}")
SET_TARGET_PROPERTIES(
WrapVulkanHeaders::WrapVulkanHeaders
PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${_include_dir}
)
ENDIF()
SET(RV_DEPS_LIST
${RV_DEPS_LIST} Vulkan::Vulkan
)
ELSE()
RV_ADD_IMPORTED_LIBRARY(
NAME
Vulkan::Vulkan
TYPE
SHARED
LOCATION
${_vulkan_lib}
IMPLIB
"${_vulkan_implib}"
SONAME
${_vulkan_lib_name}
INCLUDE_DIRS
${_include_dir}
DEPENDS
${_target}
ADD_TO_DEPS_LIST
)
ENDIF()
93 changes: 93 additions & 0 deletions cmake/dependencies/vulkan.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
#
# Copyright (C) 2026 Autodesk, Inc. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
# Vulkan = Vulkan-Headers + Vulkan-Loader (libvulkan.so), fetched from hash-pinned Khronos GitHub tarballs. RV consumes only the headers (<vulkan/vulkan.h>) and
# the loader (linked via Vulkan::Vulkan; all API calls go through vkGetInstanceProcAddr/vkGetDeviceProcAddr) -- no validation layers or shader tools. Modeled on
# glew.cmake.
#

# FORCE_LIB so _lib_dir is install/lib (we also pass -DCMAKE_INSTALL_LIBDIR=lib to the loader), giving a deterministic location across RHEL (lib64) and
# non-RHEL.
RV_CREATE_STANDARD_DEPS_VARIABLES("RV_DEPS_VULKAN" "${RV_DEPS_VULKAN_VERSION}" "" "" FORCE_LIB)

# --- Try to find an installed/system package first (only when RV_DEPS_PREFER_INSTALLED=ON). ---
# Vulkan ships no CMake config; it is located via the built-in FindVulkan module (ALLOW_MODULE) or the `vulkan` pkg-config module. Omit VERSION (FindVulkan
# version reporting is unreliable).
RV_FIND_DEPENDENCY(
TARGET
${_target}
PACKAGE
Vulkan
ALLOW_MODULE
PKG_CONFIG_NAME
vulkan
DEPS_LIST_TARGETS
Vulkan::Vulkan
)

# --- Library naming (shared between find and build paths), à la glew's _glew_lib_name. ---
# Linux: reference the SONAME symlink (libvulkan.so.1); the loader also installs the fully versioned real file (libvulkan.so.<version>) and the libvulkan.so dev
# symlink alongside it. Windows: loader produces vulkan-1.dll (in bin/) and the vulkan-1.lib import library (in lib/); the "-1" is RV_DEPS_VULKAN_VERSION_LIB.
IF(RV_TARGET_WINDOWS)
SET(_vulkan_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}vulkan-${RV_DEPS_VULKAN_VERSION_LIB}${CMAKE_SHARED_LIBRARY_SUFFIX}
)
SET(_vulkan_lib
${_bin_dir}/${_vulkan_lib_name}
)
SET(_vulkan_implib_name
${CMAKE_IMPORT_LIBRARY_PREFIX}vulkan-${RV_DEPS_VULKAN_VERSION_LIB}${CMAKE_IMPORT_LIBRARY_SUFFIX}
)
SET(_vulkan_implib
${_lib_dir}/${_vulkan_implib_name}
)
ELSE()
SET(_vulkan_lib_name
${CMAKE_SHARED_LIBRARY_PREFIX}vulkan${CMAKE_SHARED_LIBRARY_SUFFIX}.${RV_DEPS_VULKAN_VERSION_LIB}
)
SET(_vulkan_lib
${_lib_dir}/${_vulkan_lib_name}
)
ENDIF()

IF(${_target}_FOUND)
# Found via RV_FIND_DEPENDENCY (RV_DEPS_PREFER_INSTALLED=ON). FindVulkan/pkg-config usually provides the Vulkan::Vulkan target; create it only if the
# pkg-config path did not.
IF(NOT TARGET Vulkan::Vulkan)
RV_ADD_IMPORTED_LIBRARY(
NAME
Vulkan::Vulkan
TYPE
SHARED
LOCATION
${_vulkan_lib}
IMPLIB
"${_vulkan_implib}"
SONAME
${_vulkan_lib_name}
INCLUDE_DIRS
${_include_dir}
DEPENDS
${_target}
ADD_TO_DEPS_LIST
)
ENDIF()

# Found path: use TARGET_LIBS to resolve the actual library path at build time.
RV_STAGE_DEPENDENCY_LIBS(TARGET ${_target} TARGET_LIBS Vulkan::Vulkan)
ELSE()
# --- Default: fetch headers + loader from Khronos and build from source. ---
# We always build our own hash-pinned Vulkan (like every other managed dependency) unless RV_DEPS_PREFER_INSTALLED=ON. Note that a global Vulkan::Vulkan
# target may already exist here: INCLUDE(qt6) runs before us and Qt's find_package(Qt6 Gui) -> WrapVulkanHeaders runs find_package(Vulkan), which (with
# CMAKE_FIND_PACKAGE_TARGETS_GLOBAL) creates a global Vulkan::Vulkan from a discoverable *system* loader. build/vulkan.cmake takes ownership of that target
# name (repointing it at our fetched build) rather than reusing the system loader.
INCLUDE(${CMAKE_CURRENT_LIST_DIR}/build/vulkan.cmake)

IF(RV_TARGET_WINDOWS)
RV_STAGE_DEPENDENCY_LIBS(TARGET ${_target} BIN_DIR ${_bin_dir} OUTPUTS ${RV_STAGE_BIN_DIR}/${_vulkan_lib_name})
ELSE()
RV_STAGE_DEPENDENCY_LIBS(TARGET ${_target} OUTPUTS ${RV_STAGE_LIB_DIR}/${_vulkan_lib_name})
ENDIF()
ENDIF()
24 changes: 10 additions & 14 deletions src/bin/apps/rv/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -373,22 +373,18 @@ int utf8Main(int argc, char* argv[])
// documented QtWebEngine requirement, and it lets RV's auxiliary GL
// surfaces -- the second-output ScreenView and the multithreaded-upload
// worker device -- share textures/FBOs with the main viewport context
// without an explicit, ordering-sensitive setShareContext() call. Must be
// set before the QApplication is constructed.
QApplication::setAttribute(Qt::AA_ShareOpenGLContexts);

// Render Qt Quick through OpenGL, matching the graphics API RV's windows
// composite with.
// without an explicit, ordering-sensitive setShareContext() call.
//
// Qt Quick's RHI backend defaults to Direct3D 11 on Windows. RV's top-level
// windows composite with OpenGL (GLView realizes the window up front, before
// any render-to-texture widget joins the tree), and a QQuickWidget cannot
// obtain a QRhi from a window using a different API. Without this, anything
// Quick-based inside an RV window -- most visibly a QWebEngineView, whose
// page is rendered by a QQuickWidget -- silently draws nothing and logs "The
// top-level window is not using the expected graphics API for composition"
// followed by "Attempted to render scene with no rhi".
// It is also what makes the Vulkan and Metal presentation paths work:
// there is no GLView to chain from there, so the offscreen GL context
// owned by QTVulkanVideoDevice / QTMetalVideoDevice joins this global
// group instead. Without it, FTGL font-atlas glyph uploads land in a
// context where the atlas texture has no storage, and the diagnostics
// panel's ImGui font atlas fails to upload so the panel renders blank.
//
// Must be set before the QApplication is constructed.
QApplication::setAttribute(Qt::AA_ShareOpenGLContexts);

#ifdef PLATFORM_WINDOWS
// Put Qt Quick on the same graphics API RV's windows composite with.
//
Expand Down
3 changes: 2 additions & 1 deletion src/lib/app/RvApp/Options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,8 @@ namespace Rv
else if (name == "threads")
stl_ext::thread_group::debug_all(true);
else if (name == "gpu")
ImageRenderer::reportGL(true);
// Enables GLView format baseline, ImageRenderer GL reporting, and Vulkan presentation/interop diagnostics.
ImageRenderer::debugGpu(true);
else if (name == "audio")
{
AudioRenderer::setDebug(true);
Expand Down
Loading
Loading