weston/tests
Harish Krupo 7ef26886f5 gl-renderer: implement intermediate framebuffer (shadow)
Proper color management will need blending done with linear light pixel
values, that is, EOTF applied before blending, and then inverse-EOTF
applied for scanout after blending. The simplest way to set that up is
to use an intemediate framebuffer a.k.a shadow buffer containing the
composited image in linear light values, then blit from that to the
actual framebuffer.

This patch implements the shadow buffer, but the linear light
blending is left for another patch. This allows GL-renderer to turn
WESTON_CAP_COLOR_OPS on.

Half-float is chosen as the buffer format because linear light values
require more bits to encode with sufficient precision than the usual
non-linear pixel values.

v2: Use /* */ instead of // (Pekka)
    Rename fbo and tex to shadow_{fbo,tex} (Pekka)
    Check for OpenGLES capabilities before creating
    shadow_{tex,fbo} (Pekka)

Signed-off-by: Harish Krupo <harishkrupo@gmail.com>

v3: Rebased.
    Simplified GL version checks (Sebastian)
    Apply changes from "libweston: add color ops cap and bool renderer
    shadow buffer"
    Renamed supports_half_float_texture to has_gl_half_float to
    follow the existing naming pattern.
    Introduce gl_renderer_create_shadow_16f().
    Undo moving of glViewport() call.
    Replace half_float_texture_enabled with shadow_exists().
    Introduce struct gl_output_state_shadow.
    Assert no resizing with shadow.
    Fix triangle fan debug.
    Rename repaint_from_texture() to blit_shadow_to_output().
    Rewrite commit message because linear light blending is not
    implemented in this patch.
    Fix blit_shadow_to_output() for scaled/transformed outputs and
    remove redundant code.
    Fix has_gl_half_float determination.

v4: Disable blending in blit_shadow. (Daniel)
    Port to gl_renderer_get_program().
    Make a generic fbo-texture struct with parameterized format. (Daniel)
    Change has_gl_half_float into gl_half_float_type.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
2021-02-25 13:16:02 +02:00
..
reference tests: add output damage test 2021-02-25 12:54:17 +02:00
alpha-blending-test.c tests: fix typos 2021-02-24 10:00:21 -05:00
bad-buffer-test.c tests: migrate client tests 2020-01-30 10:10:35 +00:00
buffer-transforms-test.c tests: introduce struct fixture_metadata 2021-02-17 12:52:33 +00:00
config-parser-test.c tests/config-parser: Remove useless duplicate test 2019-11-28 19:24:13 +00:00
devices-test.c tests: migrate devices 2020-01-30 10:10:35 +00:00
drm-smoke-test.c tests: add drm_screenshot_no_damage 2021-02-25 12:47:07 +02:00
event-test.c tests: migrate client tests 2020-01-30 10:10:35 +00:00
input-timestamps-helper.c tests: replace fprintf() with testlog() 2019-11-22 12:54:10 +02:00
input-timestamps-helper.h tests: Introduce input timestamps helper 2018-02-20 10:20:29 +02:00
internal-screenshot-test.c tests: Add a way to write a Weston.ini inside the test 2020-09-05 07:14:49 +00:00
ivi-layout-internal-test.c tests: migrate ivi-layout-internal 2020-01-30 10:10:35 +00:00
ivi-layout-test-client.c tests: migrate ivi-layout-test 2020-01-30 10:10:34 +00:00
ivi-layout-test-plugin.c tests: migrate ivi-layout-test 2020-01-30 10:10:34 +00:00
ivi-shell-app-test.c tests: Convert ivi-shell-app-test.c to use weston_ini_setup 2020-09-30 09:41:34 -03:00
ivi-test.h ivi-shell: implement surface_on_many_layer test 2016-06-29 11:32:23 +03:00
keyboard-test.c tests: migrate client tests 2020-01-30 10:10:35 +00:00
linux-explicit-synchronization-test.c tests: migrate linux-explicit-synchronization 2020-01-30 10:10:35 +00:00
matrix-test.c Rename matrix.h to libweston/matrix.h 2019-04-18 12:31:46 +03:00
meson.build tests: add output damage test 2021-02-25 12:54:17 +02:00
output-damage-test.c tests: add output damage test 2021-02-25 12:54:17 +02:00
output-transforms-test.c tests: introduce struct fixture_metadata 2021-02-17 12:52:33 +00:00
plugin-registry-test.c tests: thread-based client harness 2020-01-30 10:10:34 +00:00
pointer-test.c tests: migrate client tests 2020-01-30 10:10:35 +00:00
presentation-test.c tests: migrate client tests 2020-01-30 10:10:35 +00:00
roles-test.c tests: thread-based client harness 2020-01-30 10:10:34 +00:00
setbacklight.c tests: Update boilerplate from MIT X11 license to MIT Expat license 2015-06-15 13:04:19 -07:00
string-test.c tests: add missing include 2017-01-23 14:12:06 +02:00
subsurface-shot-test.c tests: introduce struct fixture_metadata 2021-02-17 12:52:33 +00:00
subsurface-test.c tests: migrate client tests 2020-01-30 10:10:35 +00:00
surface-global-test.c tests: migrate surface, surface-global 2020-01-30 10:10:35 +00:00
surface-screenshot-test.c Unify the include style of shared/ headers 2019-10-04 16:04:48 +03:00
surface-test.c tests: migrate surface, surface-global 2020-01-30 10:10:35 +00:00
text-test.c tests: migrate client tests 2020-01-30 10:10:35 +00:00
timespec-test.c Unify the include style of shared/ headers 2019-10-04 16:04:48 +03:00
touch-test.c tests: migrate client tests 2020-01-30 10:10:35 +00:00
vertex-clip-test.c Rename src/ to libweston/ 2016-06-23 17:44:54 +03:00
viewporter-shot-test.c tests: introduce struct fixture_metadata 2021-02-17 12:52:33 +00:00
viewporter-test.c tests: move viewport creation into helpers 2020-03-11 17:11:03 +02:00
weston-test-client-helper.c tests: fix typos 2021-02-24 10:00:21 -05:00
weston-test-client-helper.h tests: factor out verify_image() 2020-12-09 14:06:43 +02:00
weston-test-desktop-shell.c tests: start to use Weston's default screenshooter in the test suite 2020-10-27 12:19:39 +00:00
weston-test-fixture-compositor.c tests: fix typos 2021-02-24 10:00:21 -05:00
weston-test-fixture-compositor.h tests: add mechanism to change Weston's behavior when running certain tests 2020-10-27 11:21:55 +00:00
weston-test-runner.c tests: clarify --help 2021-02-17 12:52:33 +00:00
weston-test-runner.h tests: introduce struct fixture_metadata 2021-02-17 12:52:33 +00:00
weston-test.c tests: drop test suite screenshooter implementation and protocol extension 2020-10-27 12:19:39 +00:00
weston-testsuite-data.h tests: use fixture names in reports 2021-02-17 12:52:33 +00:00
xwayland-test.c tests: migrate xwayland 2020-01-30 10:10:35 +00:00
yuv-buffer-test.c gl-renderer: implement intermediate framebuffer (shadow) 2021-02-25 13:16:02 +02:00