aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/util/meson.build1
-rw-r--r--src/util/tests/format/meson.build12
-rw-r--r--src/util/tests/format/srgb.c40
3 files changed, 53 insertions, 0 deletions
diff --git a/src/util/meson.build b/src/util/meson.build
index 88c6ab2d2a8..3d9cb1bc7bd 100644
--- a/src/util/meson.build
+++ b/src/util/meson.build
@@ -287,4 +287,5 @@ if with_tests
subdir('tests/vma')
subdir('tests/set')
subdir('tests/sparse_array')
+ subdir('tests/format')
endif
diff --git a/src/util/tests/format/meson.build b/src/util/tests/format/meson.build
new file mode 100644
index 00000000000..663bf691d1f
--- /dev/null
+++ b/src/util/tests/format/meson.build
@@ -0,0 +1,12 @@
+foreach t : ['srgb']
+ test(t,
+ executable(
+ t,
+ '@[email protected]'.format(t),
+ include_directories : inc_common,
+ dependencies : idep_mesautil,
+ ),
+ suite : 'format',
+ should_fail : meson.get_cross_property('xfail', '').contains(t),
+ )
+endforeach
diff --git a/src/util/tests/format/srgb.c b/src/util/tests/format/srgb.c
new file mode 100644
index 00000000000..9b3c15e65ce
--- /dev/null
+++ b/src/util/tests/format/srgb.c
@@ -0,0 +1,40 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "util/macros.h"
+#include "util/format/u_format.h"
+#include "pipe/p_format.h"
+
+int main(void)
+{
+ for (enum pipe_format format = 0; format < PIPE_FORMAT_COUNT; format++)
+ {
+ if (!util_format_is_srgb(format)) {
+ const enum pipe_format linear = util_format_linear(format);
+ if (format != linear) {
+ fprintf(stderr, "%s converted to linear is %s\n",
+ util_format_name(format),
+ util_format_name(linear));
+ return EXIT_FAILURE;
+ }
+ continue;
+ }
+
+ const enum pipe_format linear = util_format_linear(format);
+ if (format == linear) {
+ fprintf(stderr, "%s can't be converted to a linear equivalent\n",
+ util_format_name(format));
+ return EXIT_FAILURE;
+ }
+
+ const enum pipe_format srgb = util_format_srgb(linear);
+ if (format != srgb) {
+ fprintf(stderr, "%s converted to linear and back to srgb becomes %s\n",
+ util_format_name(format),
+ util_format_name(srgb));
+ return EXIT_FAILURE;
+ }
+ }
+
+ return EXIT_SUCCESS;
+}