Commit a8b9948
csmartdalton
feat: Add PLS backings to the RenderContext resource manager (#10793) 2fe0021c07
Before this change, renderer backends were responsible for allocating
any textures or buffers required to back pixel local storage data. They
all did this by allocating separate backings for each render target,
which is wasteful on systems with multiple render targets.
This change adds PLS backings to the RenderContext's resource tracking
system, and allocates one global PLS backing with the dimensions of the
largest recent render targets. For now, only GL is updated to take
advantage of this resource, but other backends should follow soon.
It also merges the transient PLS backings into a single logical
TEXTURE_2D_ARRAY, as opposed to separate TEXTURE_2Ds. Allocating the PLS
backings in a 3D layout appears to get better cache performance on Intel
Arc GPUs.1 parent e5b6ea8 commit a8b9948
2 files changed
+2
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
Submodule rive-runtime updated 16 files
- .rive_head+1-1
- renderer/include/rive/renderer/gl/gles3.hpp+3
- renderer/include/rive/renderer/gl/render_context_gl_impl.hpp+12-1
- renderer/include/rive/renderer/gl/render_target_gl.hpp+40-53
- renderer/include/rive/renderer/render_context.hpp+14-8
- renderer/include/rive/renderer/render_context_impl.hpp+13
- renderer/src/gl/pls_impl_rw_texture.cpp+163-49
- renderer/src/gl/pls_impl_webgl.cpp+6-9
- renderer/src/gl/render_context_gl_impl.cpp+55-12
- renderer/src/gl/render_target_gl.cpp+80-176
- renderer/src/render_context.cpp+239-56
- tests/common/testing_window.cpp+24-9
- tests/common/testing_window.hpp+17
- tests/common/testing_window_egl.cpp+25-14
- tests/common/testing_window_fiddle_context.cpp+24-9
- tests/unit_tests/renderer/pls_render_context_test.cpp+220-31
0 commit comments