Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Oss release 28.2.0 created 2024-06-11-16-11 #121

Merged
merged 2 commits into from
Jun 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
strategy:
matrix:
target-platform: [host-os]
os: [ubuntu-20.04, ubuntu-22.04, windows-2022, macos-12]
os: [ubuntu-20.04, ubuntu-22.04, windows-2019, macos-12]
type: [Debug, Release]
compiler: [default]
include:
Expand All @@ -38,7 +38,7 @@ jobs:
compiler: clang
# on Windows we skip Debug because otherwise the hosted runner runs out of space
exclude:
- os: windows-2022
- os: windows-2019
type: Debug

steps:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/build*/
*~
.vscode/
.cache/
*.swp
*.orig
*.pyc
Expand Down
64 changes: 64 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,69 @@
# Ramses Changelog

28.2.0
-------------------

### Added <a name=28.2.0.Added></a>
- Added feature level 02
- Note that EFeatureLevel_Latest now points to EFeatureLevel_02
- New features:
- Added support for Uniform Buffer Objects (Uniform Blocks) in shaders
- Added semantics for UBO:
- `EEffectUniformSemantic::ModelBlock`, `EEffectUniformSemantic::CameraBlock`, `EEffectUniformSemantic::ModelCameraBlock` (fully implemented)
- `EEffectUniformSemantic::FramebufferBlock`, `EEffectUniformSemantic::SceneBlock` (not yet implemented on renderer side)
- Added support for merging content into an existing scene
- Added support for merging content of several files to ramses-viewer
- Add experimental support for Vulkan:
- Building vulkan device needs to be explicitly enabled using cmake option `ramses-sdk_ENABLE_DEVICE_TYPE_VULKAN`
- Added new enum value `EDeviceType::Vulkan`
- Scene can be configured to specify render backend compatibility using `SceneConfig::setRenderBackendCompatibility`
- Added glad (OpenGL loader library)

### Changed <a name=28.2.0.Changed></a>
- Redesigned CMake build option for freetype/harfbuzz. Bundled package is used by default unless `ramses-sdk_USE_PLATFORM_FREETYPE` is ON.
- Removed `ramses-sdk_ALLOW_PLATFORM_FREETYPE` and `ramses-sdk_ALLOW_CUSTOM_FREETYPE`
- Replaced with `ramses-sdk_USE_PLATFORM_FREETYPE` for system package, and set to `OFF` by default
- SkinBindings are now updated at the end of logic update
- Upgraded internal abseil to 20240116.1
- Upgraded glslang to 14.1.0
- Allow embedded compositing using DMA buffers even if EGL extension `EGL_WL_bind_wayland_display` is not available
- Mark APIs related to system compositor controller on renderer side as deprecated

### Fixed <a name=28.2.0.Fixed></a>
- SkinBinding update order bug where skin bindings use old values in update
- SkinBinding serializing inverse binding matrices in wrong order
- Fixed scene locked in subscription requested state, when
- Scene is created in LocalOnly mode
- Display is destroyed, before the scene entered Ready state
- Can create display with wayland IVI window without setting IVI layer if system compositor controller not enabled
- Fixed possible crash when statistics logs are enabled
- EGLContext for async effect uploader is no longer created if feature is disabled in DisplayConfig
- Improved validation messages for RenderBuffers
- Removed warning for empty render group

28.1.1
-------------------
### Added <a name=28.1.1.Added></a>
- added ramsh commands to modify some object parameters (visibility, uniform inputs)

### Fixed <a name=28.1.1.Fixed></a>
- Attempt to read pixels from multisampled offscreen buffer no longer crashes but fails with an event
- Removed `ramses-sdk_ENABLE_LOGIC` flag, logic cannot be excluded from build anymore

28.1.0
-------------------
### Added <a name=28.1.0.Added></a>

- Added `DisplayConfig::setWindowTitle()`
- `ramses-viewer`: show scenes that are published remotely
- `ramses-viewer`: show stream surfaces

### Fixed <a name=28.1.0.Fixed></a>
- Handle time overflow when calculating watchdog notification intervals (IThreadWatchdogNotification)
- Added sanity check for display thread sleep timeout (skub mode)
- Fixed missing watchdog callbacks if notification interval is set to 1ms (RamsesFrameworkConfig::setWatchdogNotificationInterval)
- Instance prefix for logging (RamsesFrameworkConfig::setLoggingInstanceName) now works also for dynamically linked renderer library

28.0.0
-------------------
### Added <a name=28.0.0.Added></a>
Expand Down
13 changes: 6 additions & 7 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
CMAKE_MINIMUM_REQUIRED(VERSION 3.13)

set(RAMSES_VERSION_MAJOR 28)
set(RAMSES_VERSION_MINOR 0)
set(RAMSES_VERSION_MINOR 2)
set(RAMSES_VERSION_PATCH 0)
set(RAMSES_VERSION_POSTFIX "")
set(RAMSES_VERSION "${RAMSES_VERSION_MAJOR}.${RAMSES_VERSION_MINOR}.${RAMSES_VERSION_PATCH}${RAMSES_VERSION_POSTFIX}")
Expand Down Expand Up @@ -43,12 +43,12 @@ option(ramses-sdk_ENABLE_WINDOW_TYPE_ANDROID "Enable building for And
option(ramses-sdk_ENABLE_WINDOW_TYPE_IOS "Enable building for iOS window" OFF)
option(ramses-sdk_ENABLE_WINDOW_TYPE_WAYLAND_IVI "Enable building for Wayland ivi window" OFF)
option(ramses-sdk_ENABLE_WINDOW_TYPE_WAYLAND_WL_SHELL "Enable building for Wayland wl_shell window" OFF)
option(ramses-sdk_ENABLE_DEVICE_TYPE_VULKAN "Enable building for an EXPERIMENTAL vulkan device" OFF)

# shared lib options
option(ramses-sdk_BUILD_FULL_SHARED_LIB "Build full shared libraries (with renderer)." ON)

# optional components
option(ramses-sdk_ENABLE_LOGIC "Enable ramses logic - a component for scripting and animation." ON)
option(ramses-sdk_TEXT_SUPPORT "Enable/disable the ramses text API." ON)
option(ramses-sdk_ENABLE_TCP_SUPPORT "Enable use of TCP communication." ON)
option(ramses-sdk_ENABLE_DLT "Enable DLT logging support." ON)
Expand All @@ -66,11 +66,10 @@ option(ramses-sdk_ENABLE_FLATBUFFERS_GENERATION "Enable generation of fl
option(ramses-sdk_USE_IMAGEMAGICK "Enable tests depending on image magick compare" OFF)

# find options
option(ramses-sdk_ALLOW_PLATFORM_GLM "Enable to search for platform provided OpenGL Math library (glm)." ON)
option(ramses-sdk_ALLOW_PLATFORM_FREETYPE "Enable to search for platform provided freetype and harfbuzz." ON)
option(ramses-sdk_ALLOW_CUSTOM_FREETYPE "Allow usage of custom freetype and harfbuzz if platform provided one was not found." ON)
option(ramses-sdk_ALLOW_PLATFORM_LZ4 "Enable to search for platform provided lz4" ON)
option(ramses-sdk_USE_PLATFORM_LUAJIT "Uses platform provided luajit instead of internal lua" OFF)
option(ramses-sdk_ALLOW_PLATFORM_GLM "Enable to search for platform-provided OpenGL Math library (glm)." ON)
option(ramses-sdk_ALLOW_PLATFORM_LZ4 "Enable to search for platform-provided lz4" ON)
option(ramses-sdk_USE_PLATFORM_FREETYPE "Use platform-provided freetype and harfbuzz package instead of bundled package." OFF)
option(ramses-sdk_USE_PLATFORM_LUAJIT "Use platform-provided luajit instead of internal lua" OFF)

# other options
set(ramses-sdk_FOLDER_PREFIX "" CACHE STRING "Optional folder prefix for targets in visual studio.")
Expand Down
96 changes: 24 additions & 72 deletions cmake/modules/FindOpenGL.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,75 +6,27 @@
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
# -------------------------------------------------------------------------

IF(CMAKE_SYSTEM_NAME MATCHES "Windows")

# we always use the Khronos reference headers
SET(OpenGL_INCLUDE_DIRS
${ramses-sdk_SOURCE_DIR}/external/khronos
)

# Windows has all OpenGL/WGL symbols in one lib - opengl32.lib
SET(OpenGL_LIBRARIES opengl32)
set(OpenGL_DEFINITIONS "-DDESKTOP_GL")

MARK_AS_ADVANCED(
OpenGL_INCLUDE_DIRS
OpenGL_LIBRARIES
OpenGL_DEFINITIONS
)

SET(OpenGL_FOUND TRUE)

ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Linux")

# we always use the Khronos reference headers
SET(OpenGL_INCLUDE_DIRS
${ramses-sdk_SOURCE_DIR}/external/khronos
)

# only check, if systems has GLESv3 headers, if yes we
# assume the system is GLESv3 enabled.
# we still use the included khronos GLESv3 headers.
FIND_PATH(GLESv3_INCLUDE_DIRS_IN_SYSROOT GLES3/gl3.h
/usr/include
)

# GL ES 3 is implemented in GLESv2 (in mesa)
FIND_LIBRARY(OpenGL_LIBRARIES
NAMES GLESv2
PATHS
)

IF(OpenGL_LIBRARIES AND GLESv3_INCLUDE_DIRS_IN_SYSROOT)
SET(OpenGL_FOUND TRUE)
ENDIF()

MARK_AS_ADVANCED(
OpenGL_INCLUDE_DIRS
OpenGL_LIBRARIES
)

ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Android")

# only check, if systems has GLESv3 headers, if yes we
# assume the system is GLESv3 enabled.
# we still use the included khronos GLESv3 headers.
FIND_PATH(OpenGL_INCLUDE_DIRS_IN_SYSROOT GLES3/gl3.h
/usr/include
)

FIND_LIBRARY(OpenGL_LIBRARIES
NAMES GLESv3
PATHS
)

IF(OpenGL_LIBRARIES AND OpenGL_INCLUDE_DIRS_IN_SYSROOT)
SET(OpenGL_FOUND TRUE)
ENDIF()

MARK_AS_ADVANCED(
OpenGL_INCLUDE_DIRS
OpenGL_LIBRARIES
)

ENDIF()
find_path(GLES3_INCLUDE_DIRS GLES3/gl3.h
PATHS
/usr/include
)

find_library(GLES3_LIBRARIES
NAMES GLESv3 GLESv2
)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OpenGL DEFAULT_MSG GLES3_LIBRARIES GLES3_INCLUDE_DIRS)

if (OpenGL_FOUND)
add_library(OpenGL::GLES3 UNKNOWN IMPORTED)
set_target_properties(OpenGL::GLES3 PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${GLES3_INCLUDE_DIRS}"
IMPORTED_LOCATION "${GLES3_LIBRARIES}"
)

mark_as_advanced(
GLES3_INCLUDE_DIRS
GLES3_LIBRARIES
)
endif()
2 changes: 1 addition & 1 deletion cmake/ramses/platformConfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ endif()
# gcc specific
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
# optimize for debuggability
addFlags(RAMSES_DEBUG_FLAGS "-Og")
addFlags(RAMSES_DEBUG_FLAGS "-O0")

# remap GOT readonly after resolving
addFlags(RAMSES_C_CXX_FLAGS "-Wl,-z,relro,-z,now")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
# -------------------------------------------------------------------------
# Copyright (C) 2020 BMW AG
# Copyright (C) 2024 BMW AG
# -------------------------------------------------------------------------
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
# -------------------------------------------------------------------------

createModule(
NAME ramses-example-local-scene-referencing
TYPE BINARY
ENABLE_INSTALL ON
SRC_FILES src/*
DEPENDENCIES ramses-shared-lib
)
SET(CMAKE_C_COMPILER clang-15)
SET(CMAKE_CXX_COMPILER clang++-15)

SET(CMAKE_C_FLAGS "-m64 -fdiagnostics-color" CACHE STRING "")
SET(CMAKE_CXX_FLAGS "-m64 -fdiagnostics-color" CACHE STRING "")
13 changes: 13 additions & 0 deletions doc/sphinx/_static/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/*
-------------------------------------------------------------------------
Copyright (C) 2024 BMW AG
-------------------------------------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at https://mozilla.org/MPL/2.0/.
-------------------------------------------------------------------------
*/

.wy-nav-content {
max-width: none;
}
13 changes: 13 additions & 0 deletions doc/sphinx/_templates/layout.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!--
-------------------------------------------------------------------------
Copyright (C) 2023 BMW AG
-------------------------------------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at https://mozilla.org/MPL/2.0/.
-------------------------------------------------------------------------
-->
{% extends "!layout.html" %}
{% block extrahead %}
<link href="{{ pathto("_static/style.css", True) }}" rel="stylesheet" type="text/css">
{% endblock %}
5 changes: 0 additions & 5 deletions doc/sphinx/build.rst
Original file line number Diff line number Diff line change
Expand Up @@ -133,11 +133,6 @@ Supported window types can be controlled with the cmake options below:

You can use the following options to disable some of the Ramses features:

* -Dramses-sdk_ENABLE_LOGIC
* options: ON/OFF
* default: ON
* Enables the logic subsystem of ramses alongside its dependencies (Lua, Sol, ...).

* -Dramses-sdk_TEXT_SUPPORT
* options: ON/OFF
* default: ON
Expand Down
6 changes: 0 additions & 6 deletions doc/sphinx/core.rst
Original file line number Diff line number Diff line change
Expand Up @@ -613,12 +613,6 @@ this in most cases means to render the scene(s) assigned to an offscreen buffer
the consumer scene using the contents of the offscreen buffer.


^^^^^^^^^^^^^^^^^^^^^^
ContentExpiration
^^^^^^^^^^^^^^^^^^^^^^

.. TODO

------------------------
The Daemon component
------------------------
Expand Down
6 changes: 6 additions & 0 deletions doc/sphinx/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@ Ramses documentation

viewer

.. toctree::
:maxdepth: 3
:caption: Performance and Profiling

profiling

.. toctree::
:maxdepth: 3
:caption: Class Index
Expand Down
Loading
Loading