[mutter] backend/test: Add support for gamma getting/setting
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] backend/test: Add support for gamma getting/setting
- Date: Thu, 1 Sep 2022 17:08:35 +0000 (UTC)
commit a232eb263fb2db61c444f030237ad883224213d4
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Mon Dec 6 17:17:53 2021 +0100
backend/test: Add support for gamma getting/setting
The set gamma is just stored in the object, nothing else. It's
initialized to a linear gamma ramp from 0 to UINT16_MAX for each color
channel.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2165>
src/tests/meta-monitor-manager-test.c | 83 ++++++++++++++++++++++++++++++++++-
src/tests/meta-monitor-manager-test.h | 7 +++
2 files changed, 89 insertions(+), 1 deletion(-)
---
diff --git a/src/tests/meta-monitor-manager-test.c b/src/tests/meta-monitor-manager-test.c
index fe435288ab..0a36ea4944 100644
--- a/src/tests/meta-monitor-manager-test.c
+++ b/src/tests/meta-monitor-manager-test.c
@@ -483,12 +483,93 @@ meta_output_test_class_init (MetaOutputTestClass *klass)
{
}
+#define GAMMA_SIZE 256
+
+static size_t
+meta_crtc_test_get_gamma_lut_size (MetaCrtc *crtc)
+{
+ return GAMMA_SIZE;
+}
+
+static MetaGammaLut *
+meta_crtc_test_get_gamma_lut (MetaCrtc *crtc)
+{
+ MetaCrtcTest *crtc_test = META_CRTC_TEST (crtc);
+ MetaGammaLut *lut;
+
+ lut = g_new0 (MetaGammaLut, 1);
+ lut->size = crtc_test->gamma.size;
+ lut->red = g_memdup2 (crtc_test->gamma.red,
+ lut->size * sizeof (uint16_t));
+ lut->green = g_memdup2 (crtc_test->gamma.green,
+ lut->size * sizeof (uint16_t));
+ lut->blue = g_memdup2 (crtc_test->gamma.blue,
+ lut->size * sizeof (uint16_t));
+ return lut;
+}
+
static void
-meta_crtc_test_init (MetaCrtcTest *crtc_test)
+meta_crtc_test_set_gamma_lut (MetaCrtc *crtc,
+ const MetaGammaLut *lut)
+{
+ MetaCrtcTest *crtc_test = META_CRTC_TEST (crtc);
+
+ g_assert_cmpint (crtc_test->gamma.size, ==, lut->size);
+
+ g_free (crtc_test->gamma.red);
+ g_free (crtc_test->gamma.green);
+ g_free (crtc_test->gamma.blue);
+
+ crtc_test->gamma.red = g_memdup2 (lut->red,
+ sizeof (uint16_t) * lut->size);
+ crtc_test->gamma.green = g_memdup2 (lut->green,
+ sizeof (uint16_t) * lut->size);
+ crtc_test->gamma.blue = g_memdup2 (lut->blue,
+ sizeof (uint16_t) * lut->size);
+}
+
+static void
+meta_crtc_test_finalize (GObject *object)
{
+ MetaCrtcTest *crtc_test = META_CRTC_TEST (object);
+
+ g_free (crtc_test->gamma.red);
+ g_free (crtc_test->gamma.green);
+ g_free (crtc_test->gamma.blue);
+
+ G_OBJECT_CLASS (meta_crtc_test_parent_class)->finalize (object);
}
static void
meta_crtc_test_class_init (MetaCrtcTestClass *klass)
{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ MetaCrtcClass *crtc_class = META_CRTC_CLASS (klass);
+
+ object_class->finalize = meta_crtc_test_finalize;
+
+ crtc_class->get_gamma_lut_size = meta_crtc_test_get_gamma_lut_size;
+ crtc_class->get_gamma_lut = meta_crtc_test_get_gamma_lut;
+ crtc_class->set_gamma_lut = meta_crtc_test_set_gamma_lut;
+}
+
+static void
+meta_crtc_test_init (MetaCrtcTest *crtc_test)
+{
+ int i;
+
+ crtc_test->gamma.size = GAMMA_SIZE;
+ crtc_test->gamma.red = g_new0 (uint16_t, GAMMA_SIZE);
+ crtc_test->gamma.green = g_new0 (uint16_t, GAMMA_SIZE);
+ crtc_test->gamma.blue = g_new0 (uint16_t, GAMMA_SIZE);
+
+ for (i = 0; i < GAMMA_SIZE; i++)
+ {
+ uint16_t gamma;
+
+ gamma = ((float) i / GAMMA_SIZE) * UINT16_MAX;
+ crtc_test->gamma.red[i] = gamma;
+ crtc_test->gamma.green[i] = gamma;
+ crtc_test->gamma.blue[i] = gamma;
+ }
}
diff --git a/src/tests/meta-monitor-manager-test.h b/src/tests/meta-monitor-manager-test.h
index c339ec5bee..ae5659695d 100644
--- a/src/tests/meta-monitor-manager-test.h
+++ b/src/tests/meta-monitor-manager-test.h
@@ -35,6 +35,13 @@ typedef struct _MetaMonitorTestSetup
struct _MetaCrtcTest
{
MetaCrtc parent;
+
+ struct {
+ size_t size;
+ uint16_t *red;
+ uint16_t *green;
+ uint16_t *blue;
+ } gamma;
};
struct _MetaOutputTest
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]